У меня довольно большая программа, где я использую функции из модуля random
в разных файлах. Я хотел бы иметь возможность установить случайное семя один раз, в одном месте, чтобы программа всегда возвращала одни и те же результаты. Может ли это быть достигнуто в python
?
Набор случайных семян в python
Ответ 1
Основной исполняемый модуль python должен import random
и вызвать random.seed(n)
- это общий доступ ко всем другим импортам random
, если в другом месте reset нет.
Ответ 2
В начале вашего вызова приложения random.seed(x)
убедитесь, что x всегда один и тот же. Это гарантирует, что последовательность псевдослучайных чисел будет одинаковой во время каждого запуска приложения.
Ответ 3
Джон Клементс в значительной степени отвечает на мой вопрос. Однако это была не настоящая проблема: Оказывается, причиной моей случайной случайности было numpy.linalg SVD, потому что оно не всегда дает одинаковые результаты для плохо обусловленных матриц!!
Поэтому не забудьте проверить это в своем коде, если у вас есть те же проблемы!
Ответ 4
Вы можете гарантировать это довольно легко, используя свой собственный генератор случайных чисел.
Просто выберите три довольно больших числа (если это не криптографическое приложение) и подключите их к a, b и c: a = ((a * b)% c) Это дает систему обратной связи, которая производит довольно случайные данные. Обратите внимание, что не все простые числа работают одинаково хорошо, но если вы просто выполняете симуляцию, это не имеет значения - все, что вам действительно нужно для большинства симуляций, - это беспорядок чисел с достаточно сложным (псевдослучайным, запоминающимся) это не соответствует каким-либо образом с вашим приложением.
Кнут говорит об этом.