我正在使用 Mersenne twister 算法洗牌。每次需要洗牌时,我都会用 time(NULL) + deckCutCardNumber 为它播种,这是用户选择切牌的地方。如果仅第一手播种并继续使用相同的种子生成它们,我会得到更好的结果吗?还是这种方法更随机?
谢谢
最佳答案
只为 PRNG 播种一次。生成序列的统计特性只有在种子之后才能得到保证。如果您每次都重新播种,生成的序列可能没有任何可预测的统计特性。
例如,考虑一个 PRNG,它始终将种子值本身作为序列中的第一个数字返回,但在其范围内完全一致。这构成了一个很好的 PRNG,只要你不使用第一个数字。但是,如果您在每次使用前重新播种,比如递增的计数器值,那么您根本就没有随机性!
关于c++ - 每次使用 RNG 时播种好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320840/