真的,我想获取随机位序列模式,请告诉我逻辑如何获取序列模式。

我尝试使用下面的(示例)代码来获得像这样的随机位序列模式

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
仍有一些选项具有更好的随机数,但这是一个起点。

09-30 20:36