在django的视图中,我使用random.random()
。我多久需要拨打一次random.seed()
?
每次请求一次?
每个季节一次?
网络服务器正在运行一次?
答案 0 :(得分:3)
如果有的话,很少打电话给random.seed()
。
要随机,您必须允许随机数生成器在不触及种子的情况下运行。数字序列是随机的。如果更改种子,则启动新序列。种子值可能不是非常随机,导致问题。
根据您需要的号码数量,您可以考虑定期从/dev/random
重置种子。
你应该在用完前一个种子之前尝试重置种子。您没有获得完整的32位随机性,因此您可能希望在生成2 ** 28个数字后重置种子。
答案 1 :(得分:3)
不要设置种子。
您想要设置种子的唯一时间是您要确保相同的事件继续发生。例如,如果您不想让玩家在游戏中作弊,您可以保存种子,然后在加载游戏时进行设置。然后无论他们保存多少次+重新加载,它仍然会产生相同的结果。
答案 2 :(得分:0)
这实际上取决于你需要的随机数。使用一些实验来确定它是否有任何区别。您还应该考虑伪随机数实际上存在一种模式。如果有人可以猜出下一个随机数,这会对你产生影响吗?如果没有,请在会话开始时或服务器首次启动时播种一次。
在会议开始时播种一次可能是最有意义的,IMO。这样,用户将在整个会话期间获得一组伪随机数。如果您每次提供页面时播种,则无法保证这一点。