« Log4j | Main | Apache2.2 + Tomcat6.0 »

2007.03.02

Randomのランダム具合

 java.util.Randomで整数を生成した場合、どの程度同じ値が出てくる可能性があるのかをテストしてみました。

java.util.Random random = new java.util.Random();
java.util.Set set = new java.util.HashSet();
for (int i=0; i<200000; i++) {
 set.add(Integer.toString(random.nextInt(Integer.MAX_VALUE)));
}
System.out.println(set.size());

 0~約21億の間の整数をランダムで20万回発生させた場合、一度も重複する値がなかった場合はset.size()の戻り値としては20万となることが期待できます。
 で、実行してみたところ、199980~199995って感じの結果が得られました(ちなみに、ループ回数を2万に減らしても、2万にならない場合もありました)。ま、0~21億の間の値を「シャッフル」して、順番に値を取得しているというわけではないので、こんなもんでしょうか。

#もちろん、nextInt(int)の引数の値を大きくするほど、同じ値が発生する率は減少しますが(例えば、この値を1000000等にすると、それなりに重複発生率は上昇します)。

|

« Log4j | Main | Apache2.2 + Tomcat6.0 »

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Randomのランダム具合:

« Log4j | Main | Apache2.2 + Tomcat6.0 »