这与这个问题有关-C++ 中的随机数生成...第一个数字不是很随机
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
srand((unsigned int)time(NULL));
cout << rand() / double(RAND_MAX) << endl;
cout << rand() / double(RAND_MAX) << endl;
cout << rand() / double(RAND_MAX) << endl;
cout << rand() / double(RAND_MAX) << endl;
cout << rand() / double(RAND_MAX) << endl;
return 0;
}
如果您一遍又一遍地运行二进制文件 (.exe),您会注意到第一个结果始终具有相同的前三个数字。例如,每次运行总是 0.54xxxx。
不,这不是因为我发现了没有的模式。每次运行之间等待几秒钟也无济于事。
编辑:只有第一个结果具有前三个相同的数字。其余的是“随机查找”。此外,生成器使用 srand() 播种(在上面代码示例的第一行)。