Рассматривая генератор случайных чисел Java, я хочу «сохранить», а затем «загрузить» его состояние, это означает, что он должен продолжать генерировать воспроизводимые идентичные случайные числа, хотя это другой экземпляр генератора случайных чисел:
Код: Выделить всё
public static void main(String[] args) {
final java.util.Random prng1 = new java.util.Random(4);
int lastInt = 0;
// Generate arbitrary amount of random numbers
for (int i = 1; i < 21; i++) {
lastInt = prng1.nextInt();
}
// TODO: Save state
// TODO: Load state later, continuing with the same random numbers as if it were the same random number generator
final java.util.Random prngRestored = new java.util.Random(lastInt);
System.out.println("Should be identical: " + prng1.nextInt() + " =!= " + prngRestored.nextInt());
}
Одна из идей состоит в том, чтобы также сохранить количество генерируемых чисел и позволить " "восстановленный" prng с тем же начальным значением, что и исходный prng, перебирает то же количество чисел, чтобы добраться до того же внутреннего состояния, однако это похоже на напрасную трату вычислительной мощности.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ator-state
Мобильная версия