algorithm - 调用 random() 方法时需要更改随机种子吗?

标签 algorithm random random-seed

每次调用random()方法时需要改变随机种子吗?

或者应该生成一个随机种子并且在重新启动我的程序之前不要更改?

哪个选择可以获得更好的随机数?

关于我的计划

我正在使用 Node.js 开发扑克牌程序。我需要用 Math.random() 洗牌。

由于原始的Math.random()方法不够安全,所以我使用seedrandom包重写了它。

我可以为 seedrandom 提供一个随机种子。但是我不知道什么时候更改或需要我在程序运行时更改随机种子。

最佳答案

在开发时使用恒定的随机种子很有用 - 它允许您有恒定的行为,这意味着每次运行程序时都会出现您遇到的错误。

测试时 - 您可以生成随机种子作为参数,如果程序崩溃则重新创建错误。

在现实世界的应用程序中,您不能拥有恒定的随机种子,因为它会使整个程序恒定。在您的扑克游戏中,发出的牌总是相同的,您可以理解这可能是个问题。

至于在每次 random() 调用之前生成一个新的种子,伪随机生成器用于创建尽可能真实的随机变量,真正的随机意味着一旦你得到一系列的,你就无法预测下一个数字以前的数字。所以每次都改变种子没有任何意义。

关于algorithm - 调用 random() 方法时需要更改随机种子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42503884/

相关文章:

java - Array - Dupe Scanner 和算法的运行时间

java - 递归的空间复杂度

c++ - log 和 rand() 给出的不是数字

mysql - 为什么与 MariaDB 10.2 RAND() 函数发生如此多的冲突?

python - 如何在不重复的情况下从笛卡尔积中采样

python-3.x - 提供随机种子时不起作用,并且某些函数不接受种子参数

c# - 我怎样才能使这个极小极大算法完美地工作

algorithm - Flipboard的布局算法

encryption - 安全的随机种子和 derby 数据库创建

C:创建随机生成的整数,将它们存储在数组元素中,并打印每个元素中存储的整数数量