Osc*_*mez 1 java random duplicates random-seed
假设我通过使用新的Random()实例化静态最终Random对象来使用相同的种子,是否可以通过在同一实例中调用nextBytes来获得相同的数字两次?
我知道对于任何给定的种子,可以确定所有可能的"随机"数字,它实际上更像是一个序列:
synchronized protected int next(int bits) {
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
return (int)(seed >>> (48 - bits));
}
Run Code Online (Sandbox Code Playgroud)
所以基本上如果我有这个代码:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
nextBytes在通过它可以生成的所有可能数字之前产生相同字节的可能性有多大?
在返回给定位的所有可能组合之前,它会返回相同的值吗?我猜是的,但这种情况多久发生一次?
| 归档时间: |
|
| 查看次数: |
1907 次 |
| 最近记录: |