Можно ли использовать отрицательные числа в качестве семян для генерации случайных чисел? - PullRequest
2 голосов
/ 02 сентября 2010

Это не вопрос кодирования, но я надеюсь, что кто-то сталкивался с этим на форумах здесь.Я использую Python для запуска некоторых симуляций.Мне нужно запустить многократные репликации, используя разные семена случайных чисел.У меня два вопроса:

  1. Отрицательные числа в порядке как семена?
  2. Должен ли я держать некоторое расстояние в семенах?

В настоящее время я использую random.org , чтобы создать 50 чисел в диапазоне от -100000 до +100000, которые я использую как семена.Это нормально?

Спасибо.

Ответы [ 2 ]

7 голосов
/ 02 сентября 2010

Цитирование random.seed([x]):

Необязательный аргумент x может быть любым хеш-объектом.

Оба положительных и отрицательные числа являются хэшируемыми, как и многие другие объекты.

>>> hash(42)
42
>>> hash(-42)
-42
>>> hash("hello")
-1267296259
>>> hash(("hello", "world"))
759311865
5 голосов
/ 02 сентября 2010

Важно ли, чтобы ваши симуляции повторялись? Канонический способ заполнить ГСЧ - использовать текущее системное время, и это действительно случайное поведение по умолчанию :

random.seed ([х])

Инициализировать основной генератор случайных чисел. Необязательный аргумент x может быть любой хешируемый объект. Если х опущен или Нет, используется текущее системное время; текущее системное время также используется для инициализировать генератор, когда модуль впервые импортирован.

Я бы отклонился от этого поведения, только если важна повторяемость. Если это важно , то ваши семена random.org - разумное решение.

Должен ли я держать некоторое расстояние в семенах?

Нет. Для хорошего качества РНГ выбор семян не повлияет на качество продукции. Набор семян [1, 2, 3, 4, 5, 7, 8, 9, 10] должен давать то же качество случайности, что и любой случайный выбор из 10 дюймов. Но даже если бы желательно было выбрать случайные равномерно распределенные семена, поддержание некоторого расстояния нарушило бы это распределение .

...