Я пытаюсь разработать программу на языке Python для предсказания результата работы генератора псевдослучайных чисел. У меня уже есть программа, которая получает семя ранее сгенерированного числа с помощью seed = random.getstate(). Мой вопрос заключается в том, есть ли способ вычислить следующее семя, которое будет использовано, чтобы я мог предсказать следующее число.

Ответы (1)

Генераторы псевдослучайных чисел названы так потому, что они детерминированы; они генерируют последовательность чисел, которая кажется случайной, но на самом деле таковой не является. Если вы запустите ГПСЧ с одной и той же затравкой, то каждый раз будете получать одну и ту же последовательность.

У меня уже есть программа, которая получает seed предыдущего сгенерированного числа с помощью seed = random.getstate()

.

На самом деле вы получаете не семя, а скорее внутреннее состояние ГПСЧ. Вы можете сохранить это состояние и установить его снова позже. Это может быть полезно для тестирования или просто для продолжения работы с той же последовательностью.

Сейчас я хочу спросить, есть ли способ вычислить следующее семя, которое будет использоваться, чтобы я мог предсказать его число.

Однако, это не совсем семя, которое является начальным значением, которое вы предоставляете для начала последовательности ГПСЧ. То, что вы получаете, - это внутреннее состояние ГПСЧ. Но да, если у вас есть это состояние, то предсказать следующее число очень просто: достаточно вызвать random.setstate(...) с полученным состоянием, сгенерировать следующее число, а затем снова вызвать random.setstate(...), чтобы вернуть ГПСЧ в то же состояние и снова сгенерировать то же число.

2022 WebDevInsider