真的,我想获取随机位序列模式,请告诉我逻辑如何获取序列模式。
我尝试使用下面的(示例)代码来获得像这样的随机位序列模式
2147483663, 1073741831, 536870915, 2415919105, 1207959552, 2751463424, 3523215360, 1761607680, 3028287488, 3661627392, 1830813696
但是我只得到恒定的价值,没有像这样的任何变化
1932117999, 1932117999, 1932117999, 1932117999, 1932117999, 1932117999, 1932117999, 1932117999, 1932117999, 1932117999
请找到附件并建议我。我很感激。
int main()
{
unsigned int x=12131222, y=898565;
unsigned int z=58964796, c=6543217;
unsigned long long t, result;
unsigned int r;
int i;
x = 14900243 * x+ 123456789;
y ^= y << 21;
y ^= y >> 17;
y ^= y << 30;
/* Do not set y=0! */
t = 42945843 * z + c;
c = t >> 32;
z = t;
result=(unsigned int)(x>>32) + (unsigned int)y +z;
for ( i = 0; i < 10; i++)
{
r = result; //use the LFSR
printf ("%u, ", r);
}
return 0;
}
最佳答案
通常,您不应该编写自己的伪随机数代码。使用srand()进行播种,使用rand()进行计算,如此处所示:C++ random float number generation
仍有一些选项具有更好的随机数,但这是一个起点。