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

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

作者: myleosu | 来源:发表于2018-02-28 17:59 被阅读0次
#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

这样就可以了。

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/tdeixftx.html