rand()不会更新函数调用之间的值

时间:2015-11-18 19:07:36

标签: c

我注意到如果我使用rand()在循环内生成随机值,它将在每次迭代时更改值。但是,即使通过srand()播种,也不是函数调用之间的情况。

#include <stdio.h>
#include <stdlib.h>
#include <math.h> 
#include <time.h>
#include <string.h> 

void test(){   
    float r;

    srand(time(NULL));
    r =  (double)rand()/(double)RAND_MAX;
    printf(" %6.3f \n",r);
}  
int main(){

     float r;
    //srand(time(NULL));
    for(int i=0;i<5;i++){
        test();
        //r =  (double)rand()/(double)RAND_MAX;
        //printf(" %6.3f \n",r);
    }

}

如何强制rand()在每次函数调用中刷新其值?

1 个答案:

答案 0 :(得分:1)

每个程序仅播种一次。将srand移动到main作为第一行之一(不在循环内!)。我可以从你的评论栏中看到你在某个时候打算这样做。