Предполагая, что я использую одно и то же семя, создавая экземпляр статического конечного объекта Random с помощью new Random (), возможно ли получить одно и то же число дважды, вызвав nextBytes в том же экземпляре?
Я знаю, что для любого заданного числа можно определить все возможные «случайные» числа, и это больше похоже на последовательность:
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 сгенерирует те же байты, прежде чем пройдет через все возможные числа, которые он может сгенерировать?
Вернет ли это то же значение перед возвратом всех возможных комбинаций для заданных битов? Я предполагаю, что да, но как часто это будет происходить?