Вопрос

В представлении в django я использую random.random().Как часто я должен звонить random.seed()?Один раз на каждый запрос?Один раз за каждый сезон?Один раз во время работы веб-сервера?

Это было полезно?

Решение

Позвонить random.seed() редко, если вообще бывает.

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

В зависимости от того, сколько чисел вам нужно, вы можете рассмотреть возможность сброса начального значения из /dev/random периодически.

Вам следует попытаться сбросить начальное значение непосредственно перед тем, как вы израсходовали предыдущее начальное значение.Вы не получаете полных 32 бита случайности, поэтому, возможно, вам захочется сбросить начальное значение после генерации 2 ** 28 чисел.

Другие советы

Не сажайте семя.

Единственный раз, когда вы хотите установить начальное значение, - это если вы хотите убедиться, что одни и те же события продолжают происходить.Например, если вы не хотите позволять игрокам жульничать в вашей игре, вы можете сохранить начальное значение, а затем установить его, когда они загрузят свою игру.Тогда независимо от того, сколько раз они сохранят + перезагрузят, это все равно даст те же результаты.

Это действительно зависит от того, для чего вам нужно случайное число.Проведите некоторые эксперименты, чтобы выяснить, имеет ли это какое-либо значение.Вы также должны учитывать, что на самом деле существует шаблон для псевдослучайных чисел.Имеет ли для вас значение, сможет ли кто-нибудь угадать следующее случайное число?Если нет, запустите его один раз в начале сеанса или при первом запуске сервера.

Посев один раз в начале сеанса, вероятно, имел бы наибольший смысл, ИМО.Таким образом, пользователь будет получать набор псевдослучайных чисел на протяжении всей своей сессии.Если вы вводите семя при каждом просмотре страницы, это им не гарантируется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top