データ分析エンジニアのブログ

日常のことからプログラミングや機械学習まで@六本木

重複しない0〜9の乱数列の取り出し方

今回はアルゴリズム系の話です。

最近あるサービスでランダムに◯件取得するみたいな機能を作成し、
そこで乱数について思うところが少しあったので、、

題名の通り重複しない0〜9の範囲の10個の乱数列の取り出し方について、
2通りの方法を試してみました。

  1. 乱数をどんどん発生させて、初めて出てきたものを取っていく
  2. 0〜9の配列を用意してシャッフルする


まず1のやり方を思いついたのですが、調べてみると2の方法も出てきたので、
実行速度を比較してみました。

乱数の範囲方法1方法2
0〜9の10個 0.000319957733154 0.000150918960571
0〜99の100個 0.00186514854431 0.000289916992188


PHPを使って実験してみたんですが、
予想していたとおり、2番目の方法のほうが速度は速かったです。
特に取り出す乱数列の個数が大きくなるほどその傾向は顕著になるようです。