c++ - 每次使用 RNG 时播种好主意吗?

标签 c++ algorithm random

我正在使用 Mersenne twister 算法洗牌。每次需要洗牌时,我都会用 time(NULL) + deckCutCardNumber 为它播种,这是用户选择切牌的地方。如果仅第一手播种并继续使用相同的种子生成它们,我会得到更好的结果吗?还是这种方法更随机?

谢谢

最佳答案

只为 PRNG 播种一次。生成序列的统计特性只有在种子之后才能得到保证。如果您每次都重新播种,生成的序列可能没有任何可预测的统计特性。

例如,考虑一个 PRNG,它始终将种子值本身作为序列中的第一个数字返回,但在其范围内完全一致。这构成了一个很好的 PRNG,只要你不使用第一个数字。但是,如果您在每次使用前重新播种,比如递增的计数器值,那么您根本就没有随机性!

关于c++ - 每次使用 RNG 时播种好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320840/

相关文章:

algorithm - 计算二进制字符串的 Lempel-Ziv (LZ) 复杂度(又名序列复杂度)

javascript - 在固定 block 中按比例调整图像大小

algorithm - 最小功率要求算法

java - Java 随机的好种子 - 构造迷宫

R:在 r 中创建具有特定相关性的数据集

c++ - "An existing connection was forcibly closed by the remote host"监听传入数据时

c++ - 字符串=“hello”和字符串a =(char * )“hello”在C++中有什么区别?

c# - 随机生成的机会非常低

c++ - 从priority_queue c++删除使用 "top"出队的元素

c++ - `int main(int argc, char* argv<::>)` 如何成为 main 的有效签名?