new Random() を使用して static final Random オブジェクトをインスタンス化することで同じシードを使用していると仮定すると、同じインスタンスで nextBytes を呼び出して同じ数を 2 回取得することは可能ですか?
特定のシードについて、可能なすべての「乱数」を決定できることを認識しており、実際にはシーケンスに似ています。
synchronized protected int next(int bits) {
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
return (int)(seed >>> (48 - bits));
}
したがって、基本的にこのコードがある場合:
private static final Random random = new Random();
public void doSomething() {
for (int i=0; i < 1000000000; i++) {
byte byteArray[] = new byte[8];
random.nextBytes(byteArray)
}
}
nextBytes が生成可能なすべての数値を処理する前に、同じバイトを生成する可能性はどのくらいありますか?
これは、指定されたビットのすべての可能な組み合わせを返す前に同じ値を返しますか?. はいと思いますが、これはどのくらいの頻度で起こりますか?