Algorithm 调用random()方法时需要更改随机种子吗?
每次调用random()方法时是否需要更改随机种子 或者应该生成一个随机种子,并且在重新启动程序之前不进行更改 哪种选择可以得到更好的随机数 关于我的节目 我正在用Algorithm 调用random()方法时需要更改随机种子吗?,algorithm,random,random-seed,Algorithm,Random,Random Seed,每次调用random()方法时是否需要更改随机种子 或者应该生成一个随机种子,并且在重新启动程序之前不进行更改 哪种选择可以得到更好的随机数 关于我的节目 我正在用Node.js开发一个扑克程序。我需要用Math.random()洗牌 由于原始的Math.random()方法不够安全,所以我使用包重写了它 我可以为seedrandom提供一个随机种子。但我不知道何时更改或需要在程序运行时更改随机种子。在开发时使用恒定的随机种子非常有用-它允许您有恒定的行为,这意味着每次运行程序时都会出现错误 测
Node.js
开发一个扑克程序。我需要用Math.random()
洗牌
由于原始的Math.random()
方法不够安全,所以我使用包重写了它
我可以为
seedrandom
提供一个随机种子。但我不知道何时更改或需要在程序运行时更改随机种子。在开发时使用恒定的随机种子非常有用-它允许您有恒定的行为,这意味着每次运行程序时都会出现错误
测试时-您可以生成随机种子作为参数,如果程序崩溃,则重新创建错误
在现实世界的应用程序中,你不能有一个恒定的随机种子,因为它会使整个程序保持恒定。在你的扑克游戏中,所发的牌总是一样的,你可以理解这可能是个问题
至于在每次random()调用之前生成一个新的种子,伪随机生成器用于创建尽可能真实的随机变量,真实随机意味着一旦得到一系列先前的数字,就无法预测下一个数字。因此,每次更改种子都没有任何意义。在开发时使用恒定的随机种子非常有用-它允许您有恒定的行为,这意味着每次运行程序时都会出现错误 测试时-您可以生成随机种子作为参数,如果程序崩溃,则重新创建错误 在现实世界的应用程序中,你不能有一个恒定的随机种子,因为它会使整个程序保持恒定。在你的扑克游戏中,所发的牌总是一样的,你可以理解这可能是个问题
至于在每次random()调用之前生成一个新的种子,伪随机生成器用于创建尽可能真实的随机变量,真实随机意味着一旦得到一系列先前的数字,就无法预测下一个数字。所以每次更改种子都没有任何意义。那么你是在问随机性安全性 在这种情况下,情况就完全不同了 使用固定伪随机函数作为随机性源总是存在这样的风险,即输出可能具有确定性特性,可能被游戏的潜在黑客/骗子利用。例如,在一系列的纸牌之后,游戏会自己重复,等等 您可以采取一些措施来预防或降低这种风险:
RDTSC
state等
通过这种方式,您应该在某个饱和或随机周期过去之前更改种子,之后可以预测输出的某些属性此外,使用直方图有助于查看输出的质量。(自定义生成器上的某些种子可能会导致数字丢失或分发有缺陷)那么您是在询问随机性安全性吗 在这种情况下,情况就完全不同了 使用固定伪随机函数作为随机性源总是存在这样的风险,即输出可能具有确定性特性,可能被游戏的潜在黑客/骗子利用。例如,在一系列的纸牌之后,游戏会自己重复,等等 您可以采取一些措施来预防或降低这种风险:
RDTSC
state等
通过这种方式,您应该在某个饱和或随机周期过去之前更改种子,之后可以预测输出的某些属性