C++关于srand函数使用时间作为种子仍然得到相同数字

#include 
#include 
#include 
using namespace std;

int main()
{
    for(int i = 0;i<10;i++){
        srand(time(NULL));
        int num = rand();
        cout<

结果


1.png

例如上面所示,将srand()函数放在for循环里面,每次rand()生成的随机数都是一样的,这并是因为计算机运行很快,造成每次time产生的种子都是一样的(time的时间精度较低,只有55ms),所以得到的随机数也是一样的,所以要把srand()放在循环外面.

#include 
#include 
#include 
using namespace std;

int main()
{
    srand(time(NULL));
    for(int i = 0;i<10;i++){
        int num = rand();
        cout<

结果


2.png

这样就可以了。

你可能感兴趣的:(C++关于srand函数使用时间作为种子仍然得到相同数字)