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

2018-02-28  本文已影响0人  myleosu
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

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

结果


1.png

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

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

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

结果


2.png

这样就可以了。

上一篇 下一篇

猜你喜欢

热点阅读