rand改变值而不改变种子

chr*_*ris 6 c++ random random-seed

参加以下计划:

#include <cstdlib>
using std::rand;

#include <iostream>
using std::cout;

int main()
{
    cout << rand() << ' ' << rand() << ' ' << rand() << '\n';
}
Run Code Online (Sandbox Code Playgroud)

由于rand只要种子不使用而产生相同的值srand,这应该产生三个相同的数字.
例如

567 567 567
Run Code Online (Sandbox Code Playgroud)

但是,当我运行这个程序时,它给了我三个不同的值.
例如

6334 18467 41
Run Code Online (Sandbox Code Playgroud)

当程序(编译并)再次运行时,会生成相同的三个数字.srand在我开始得到不同的结果之前,我不应该用它来改变种子rand吗?这只是我的编译器/实现试图帮我一个忙吗?

操作系统:Windows XP
编译器:GCC 4.6.2
库:MinGW

编辑:通过尝试使用srand,我发现这是种子1的结果(我猜是默认).

小智 4

每次调用rand()都会生成不同的随机数。

种子实际上决定了创建的随机数的序列。使用不同的种子将获得另外 3 个随机数,但对于给定的种子,您始终会获得这 3 个数字。

如果您想多次使用相同的数字,只需调用rand()一次并将其保存在变量中。

  • 对 rand() 的不同调用可以返回相同的值。 (2认同)