2chのl1j雑談スレでjavaの専門家(笑)が「l1jのランダム値はすごい偏る」的なことを言っていたので
検証してみた。
l1jは独自に乱数ジェネレーターを持ってるわけではなくてjavaクラスライブラリのjava.util.Randomメゾットを使用しているのでそれを使って検証。
検証ソースはこんな感じ 超簡易
Random random = new Random();
for(int i = 0;i <10;i++){
System.out.println(random.nextInt(100) + 1);
}
1~100の乱数を10回繰り返して表示させ、エクセルに貼り付けてプロットグラフを作ってみた。
これを100回ぐらいやったんだけど画像いっぱいになっちゃうんで3つほど
結論から言うとやっぱすこし偏ってる感はある
グラフはXが試行回数Yが乱数値ね
1回目
乱数値50を基準にみると、50>が8 50<が2
カタヨッテルネー
2回目
今度は逆
50>が2個
50<が8個
3回目
また逆・・
50>が8個
50<が2個
50<が2個
まあ顕著なやつだけピックアップしたからかたよってるぢゃん!ってなるけど
割合が5:5になるのはなかったなあ
かなりかたよるっぽいね
乱数ジェネレータをつくろうかなあー
うまくいったらL1Jに実装してもらいたいけど既にjava.util.Randomいっぱい使ってるから
修正めんどくさそうだ・・
1 コメント:
メルセンヌツイスタをjavaで書いたものが転がってるみたいですよ。
java.util.Randomで2000回試行
1から100までの出現回数です。
15, 17, 19, 23, 14, 10, 22, 17, 21, 22,
19, 27, 20, 19, 18, 22, 21, 30, 24, 17,
19, 25, 17, 19, 20, 19, 23, 22, 17, 24,
22, 22, 17, 17, 23, 26, 18, 17, 27, 27,
18, 19, 23, 24, 20, 16, 25, 19, 23, 19,
16, 26, 35, 21, 26, 18, 20, 18, 21, 12,
22, 11, 27, 19, 22, 17, 24, 15, 20, 12,
20, 19, 19, 17, 18, 24, 16, 22, 15, 18,
16, 21, 18, 18, 22, 25, 16, 16, 14, 18,
23, 13, 17, 21, 30, 19, 10, 21, 23, 25,
コメントを投稿