在一个循环中,足以将种子设置一次以获得一系列随机数。函数 rand 如何仅基于一个种子生成大量随机数?
答案 0 :(得分:2)
您只需要一个将一个数字转换为两个数字的算法。一个数字成为您的下一个输出,另一个成为您的下一个种子。这种算法非常简单。例如,您可以将数字乘以两个不同的素数,然后减少每个mod 65536.这将从单个输入产生两个输出。
另一种方法更简单:
1)通过将种子乘以一个数字并添加第二个数字来置换种子。 (例如,seed = seed * 214013 + 2531011;
。)
2)仅输出新种子的一部分。 (例如,return (seed >> 16) &0x7ffff;
。)
答案 1 :(得分:0)
实际上Pseudorandom,数字看似随机但不是,它们是确定性的,因为它们可以通过算法预测。无法预测真正的随机数。使用相同的种子将产生相同的序列。标准指定和算法,但使用的actual algorithm将取决于实现。