我必须使用现在退休的员工编写的一些代码,并且我有一些关于随机数的奇怪事情。在某些时候,他将 PRNG 返回的值向右移动 10 位,然后在该值上使用掩码。
我已经在互联网上看到一些 PRNG 的随机性很差,它们生成的数字中有一些位(就像最后一个,只是在 1 和 0 之间交替),但我已经搜索过是否存在一些关于此类问题的文献Mersenne Twister,但我没有找到。有人知道这件事吗?
最佳答案
通常,任何位都应该是随机的,这是梅森捻线机的特性。
但是(我不太了解MT)您可能在某些位之间存在长期依赖性。
建议使用库函数来设置整数范围,而不是自己安排位,否则您永远都不知道它可能获得的复杂属性。
如果使用c++ 11标准库,则只需将std::mt19937与std::uniform_int_distribution一起使用
关于c - 从Mersenne Twister获得的数字中只取几位是否安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27128803/