代码之家  ›  专栏  ›  技术社区  ›  Christian

在Django随机播种

  •  4
  • Christian  · 技术社区  · 15 年前

    在Django的一个视图中,我使用 random.random() . 我要多长时间打一次电话 random.seed() ? 每次请求一次? 每个季节一次? 有一次Web服务器正在运行?

    3 回复  |  直到 15 年前
        1
  •  3
  •   S.Lott    15 年前

    呼叫 random.seed() 很少,如果有的话。

    要随机,必须允许随机数生成器在不接触种子的情况下运行。数字的顺序是随机的。如果你改变种子,你就开始一个新的序列。种子值可能不是很随机,从而导致问题。

    根据需要多少个数字,可以考虑从 /dev/random 定期地。

    您应该在用完以前的种子之前尝试重置种子。您无法获得完整的32位随机性,因此可能需要在生成2个**28数字后重置种子。

        2
  •  3
  •   Paul Tarjan    15 年前

    别撒种。

    您唯一想要设置种子的时间是确保相同的事件持续发生。例如,如果你不想让玩家在你的游戏中作弊,你可以保存种子,然后在他们加载游戏时设置。然后,不管他们保存+重新加载多少次,它仍然会给出相同的结果。

        3
  •  0
  •   a_m0d    15 年前

    这真的取决于你需要随机数做什么。用一些实验来找出是否有什么不同。您还应该考虑到实际上存在一个伪随机数模式。如果有人能猜出下一个随机数,这对你有什么影响吗?如果不是,则在会话开始或服务器首次启动时对其进行一次种子设定。

    在会话开始时播种一次可能是最有意义的,IMO。这样,用户在整个会话期间将得到一组伪随机数。如果你每次发一个页面的时候都输入种子,他们就不能保证这一点。