C++ rand()没有提供基于种子的正确数字

V. *_*son 5 c++ random srand

我正在为我的类进行C++赋值,我们必须使用种子为99的rand()来生成一组值.但是,我的问题是,当我尝试在我们的参数中创建一个值时,该数字与教师为我们提供的确定的第一个数字不同.代码如下所示:

    int lottoNumber;
  srand (RANDOM_NUMBER_SEED);
  do
  {
    lottoNumber = rand ();
  } while (lottoNumber > 25 || lottoNumber < 1);

  cout << lottoNumber << endl;
Run Code Online (Sandbox Code Playgroud)

由此产生的价值是13,而预计产生的数量是2.任何帮助,为什么这是不同的将是伟大的,谢谢!

Hol*_*Cat 9

使用的算法rand()是实现定义的.

这意味着它可能在不同的编译器和编译器版本上有所不同.


Lig*_*ica 5

你的教练是产生幻觉的.这是一个伪随机数发生器.仅仅因为这种生成器的属性倾向于在给定相同种子的情况下产生相同的结果,在任何特定的程序调用中,并不意味着这种行为以任何方式得到保证,或者应该预期相同的属性应用一般来说永远.

如果你想要一个确定性的序列,不要使用随机数发生器!