在Django的视图中,我使用
每个请求调用一次? 每个季节调用一次? 在Web服务器运行时调用一次?
random.random()
。我需要多久调用一次random.seed()
?每个请求调用一次? 每个季节调用一次? 在Web服务器运行时调用一次?
random.random()
。我需要多久调用一次random.seed()
?不要设置种子。
只有在想确保相同的事件一直发生时,才需要设置种子。例如,如果您不希望玩家在游戏中作弊,可以保存种子,然后在他们加载游戏时设置它。然后,无论他们保存和重新加载多少次,都会得到相同的结果。
尽可能少地调用random.seed()
。
为了保持随机性,必须允许随机数生成器在不触及种子的情况下运行。数字序列是随机的。如果更改种子,则会启动新的序列。种子值可能不太随机,导致问题。
根据您需要的数字数量,可以考虑定期从/dev/random
重置种子。
应该在使用完先前的种子之前尝试重置种子。您无法获得完整的32位随机性,因此您可能需要在生成2 ** 28个数字后重置种子。
这真的取决于你需要随机数的用途。通过一些实验来找出是否有任何差异。你还应该考虑到伪随机数实际上是有模式的。如果有人可以猜测下一个随机数,对你是否有影响?如果没有,那么在会话开始时或服务器首次启动时进行一次种子播种。
在会话开始时进行一次种子播种可能是最合理的选择,在用户会话期间他们将获得一组伪随机数。如果每次提供页面时都进行播种,则不能保证这一点。