Joh*_*ook 23
查看George Marsaglia的这个随机数发生器集合.他是随机数生成方面的领先专家,所以我有信心使用他推荐的任何东西.该列表中的生成器很小,有些只需要几个无符号长整数作为状态.
按照您的长期标准和良好的均匀分布,Marsaglia的发电机绝对是"高品质".他们通过了严格的统计测试,尽管他们不会做密码学.
小智 11
unsigned int lfsr113_Bits (void)
{
static unsigned int z1 = 12345, z2 = 12345, z3 = 12345, z4 = 12345;
unsigned int b;
b = ((z1 << 6) ^ z1) >> 13;
z1 = ((z1 & 4294967294U) << 18) ^ b;
b = ((z2 << 2) ^ z2) >> 27;
z2 = ((z2 & 4294967288U) << 2) ^ b;
b = ((z3 << 13) ^ z3) >> 21;
z3 = ((z3 & 4294967280U) << 7) ^ b;
b = ((z4 << 3) ^ z4) >> 12;
z4 = ((z4 & 4294967168U) << 13) ^ b;
return (z1 ^ z2 ^ z3 ^ z4);
}
Run Code Online (Sandbox Code Playgroud)
质量非常高,速度快.不要使用rand()做任何事情.它比无用还糟糕.