采用以下程序:
#include <cstdlib>
using std::rand;
#include <iostream>
using std::cout;
int main()
{
cout << rand() << ' ' << rand() << ' ' << rand() << '\n';
}
由于 rand
会产生相同的值,只要不使用 srand
更改种子,这应该会产生三个相同的数字。
例如
567 567 567
但是,当我运行这个程序时,它会给出三个不同的值。
例如
6334 18467 41
当程序再次(编译和)运行时,会生成相同的三个数字。在我开始从 rand
获得不同的结果之前,我不应该必须使用 srand
来更改种子吗?这只是我的编译器/实现试图帮我一个忙吗?
操作系统:Windows XP
编译器:GCC 4.6.2
库:MinGW
编辑:
通过尝试使用 srand
,我发现这是种子 1(我猜这是默认值)的结果。
最佳答案
每次调用 rand()
都会生成一个不同的随机数。
种子实际上决定了所创建的随机数的顺序。使用不同的种子会给你另外 3 个随机数,但你总是会得到给定种子的这 3 个数字。
如果您想多次使用相同的数字,只需调用一次 rand()
并将其保存在一个变量中即可。
关于c++ - rand 在不改变种子的情况下改变值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032236/