分享

怎样解决rand()函数每次产生随机数都一样的问题

 注定的水瓶 2015-11-19

各种编程语言返回的随机数,实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。

如果计算伪随机序列的初始数值(称为种子)相同,则计算出的伪随机序列相同。

要解决这个问题,需要在每次产生随机序列之前,先指定不同的种子。这样计算出来的随机序列就不会完全相同了,可以在调用rand()函数之前调用srand((unsigned)time(MULL))函数,不过要在头文件写(#include<time.h>与#include<conio.h>),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数时的时间通常是不同,这样就可以保证随机性了。

代码如下:

产生一样随机数的代码:

#include<iostream>
using namespace std;

int main(){
int a[10];
int i;
for(i=0;i<10;i++)
{a[i]=rand()%100+2;
cout<<"a["<<i<<"]="<<a[i]<<endl;}
}

经过修改的代码:

#include<iostream>
#include<time.h>
#include<conio.h>
using namespace std;

int main(){
int a[10];
int i;
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{a[i]=rand()%100+2;
cout<<"a["<<i<<"]="<<a[i]<<endl;}
}

这样就OK了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多