2

Random.nextInt()Javaがいつか繰り返されるかどうか誰かが知っていますか?

具体的にはn、次の2つのリストが同じになるような数はありますか?

List<Integer> a = new LinkedList<>();
List<Integer> b = new LinkedList<>();

for (int i = 0; i < n; ++i)
   a.add(randObject.nextInt());

for (int i = n; i <= n * 2 ; ++i)
   b.add(randObject.nextInt());

すべてのランダムオブジェクトにピリオドがあることが保証されていますか?(注:異なるシードのオブジェクトは同じ期間である必要はありません)

4

2 に答える 2

4

JavaのRandom.nextInt()がしばらくしてから繰り返されるかどうか誰かが知っていますか?

はい、そうなります。ジェネレーターの状態は有限であるため、生成されるシーケンスの周期は有限です。

具体的には、次の2つのリストが等しくなるような数nは何ですか?

これは指定されておらず、Javaの実装によって異なります。

シードが何であるかに関係なく、各ランダムオブジェクトに常にそのようなnが存在することが保証されていますか?

期間は有限です。ただし、必ずしもすべてのシードで同じであるとは限りません。

于 2013-03-03T21:15:12.960 に答える
-1

あなたが本当に本当に本当に幸運であるなら、そうです。それ以外の場合はありません。

しかし、javadocから

nextIntの一般的な契約は、1つのint値が疑似ランダムに生成されて返されることです。2 ^ 32の可能なint値はすべて、(ほぼ)等しい確率で生成されます。

于 2013-03-03T21:15:07.943 に答える