消除多次调用rand()函数产生相同的随机数

问题

当在主函数多次调用randW()来产生随机函数时,每次产生的随机数结果相同。这是因为 srand((unsigned)time(NULL));这条语句虽然避免了在

for(i=0;i

for(j=0;j

{

}

这个循环当中产生相同的随机数,但是当计算机运行时,时间非常短,以time作为种子数,多次调用randW()函数产生的种子数是一样的,就会出现相同的随机数。

void randW(vector >&w)
{
    int i,j;
    for(i=0;i

 可以看到在主函数中调用两次randW()函数后,w1的数据和w2的数据是完全相同的。

消除多次调用rand()函数产生相同的随机数_第1张图片

 

解决方法

只要srand((unsigned)time(NULL));运行一次就可以,无论在主函数有几次调用andW()函数,那么每次的w[i][j]的值都会不一样。

bool operated=true;//定义全局变量operated为true
void randW(vector >&w)
{
    int i,j;
    if(operated)
    {
        srand((unsigned)time(NULL));
        operated=false;
    }

    for(i=0;i

在主函数中调用两次randW()函数后,w1的数据和w2的数据就不一样了。

消除多次调用rand()函数产生相同的随机数_第2张图片

 

你可能感兴趣的:(日常Debug,c++)