我最近创建了一个RNG LCG,公式是:
newSeed = (131173 * actualSeed + 27) % 262144;
但是我有一个问题,这个RNG是用来引入一个种子,然后它会生成一个序列。但是,出于其他原因,我需要为每个数引入一个种子,它由以下条件控制:n * x,n是任意数x是x坐标,这样我就得到了如果n是种子,我想生成一个随机Map,总是会生成相同的.
问题是,这样做相当于:
y = (131173 * x + 27) % 262144
当131173 * x +27等于262144(m)时,这给出了增长并返回到零的数字,这没有给出随机的假象,我已经尝试过在引入种子时,修改种子,以便得到的数字具有更随机的方面,但我不知道这是否工作得很好,我需要建议。
我试过,当种子被输入时,种子是:
x * x
,以及之后
(x * x) | n(seed)
,这确实给了我一个更随机的外观,但我不知道这是否是解决问题的最佳方式。
1条答案
按热度按时间vi4fp9gy1#
PRNG种子的通常开始是使用一个时间参考,这样你就知道在下一轮,它将从一个新的种子开始。
标准库
srand
的一个经典例子是