2016-10-02 15 views
2

これは私を困惑させました。なぜこれはすべての1の文字列を返しますか?私はそれが種の価値と関係があると信じています。それが変更されると、数字ははるかに多様化します。Javaランダム生成オール1の

Random random = new Random(441287210L); 

for (int i = 0; i < 10; i++) 
    System.out.print(random.nextInt(10) + " "); 

+4

このリンクを参照してください:http://stackoverflow.com/questions/13241937/random-class-acting-odd使用している種子がその数列を生成し、種が定数であることを覚えておいてください。その生成されたシーケンスもそうです。 – ambs

+0

シード「441287210L」ではすべてのものが生成されます。常に同じシードを使用すると、**疑似**乱数ジェネレータなので、常に同じシーケンスの数字が生成されます。シード '441287211L'(あなたのシードプラス1)を試し、毎回' 7 1 9 5 8 3 2 7 3 4'を作ります。 '新しいランダム(System.currentTimeMillis());'を試して、 'new Random()'を試してみてください。 –

答えて

4

ランダムアルゴリズムが10個の連続した1で始まるシーケンスを生成できなかった場合、非常に良いランダムアルゴリズムではありません。ちょうど1/10,000,000,000の種子のために起こる限り。 48-bit seedでは、同じことをするおよそ28000の種子が見つかるはずです。

3

おめでとう、100億回の確率で確率1に相当する種が見つかりました。 JavaのRandomに2 ** 48のサイクルがあるとすれば、およそ2万8千の種があり、これは同等の動作を生成するはずです。

関連する問題