gpt4 book ai didi

c - 有什么比用于彩票调度程序的 LCG 更好的(伪)随机数生成器?

转载 作者:太空狗 更新时间:2023-10-29 15:52:32 26 4
gpt4 key购买 nike

我想设计一个彩票调度程序,我需要一个非常好的(伪)随机数生成器,类似于 LCG,但我想知道是否还有其他更好的选择?我专门寻找用 C 语言编写的随机生成器。

LCG代码:

unsigned long lcg_rand(unsigned long a)
{
return (a * 279470273UL) % 4294967291UL;
}

另外我想知道 srand() 是否可以用于此目的或不是很准确?

最佳答案

如果您需要简单但体面的质量,我会使用 64 位 LCG 的高 32(或更少)位,可能对输出应用调温功能。这样做时,我复制了 Mersenne Twister 中使用的回火函数.我不建议实际使用 Mersenne Twister,因为它比没有明显更好质量的其他 PRNG 具有更多的复杂性和内部状态。

下面是一些示例代码:

static uint32_t temper(uint32_t x)
{
x ^= x>>11;
x ^= x<<7 & 0x9D2C5680;
x ^= x<<15 & 0xEFC60000;
x ^= x>>18;
return x;
}
uint32_t lcg64_temper(uint64_t *seed)
{
*seed = 6364136223846793005ULL * *seed + 1;
return temper(*seed >> 32);
}

关于c - 有什么比用于彩票调度程序的 LCG 更好的(伪)随机数生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19083566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com