我注意到如果我使用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()在每次函数调用中刷新其值?
答案 0 :(得分:1)
每个程序仅播种一次。将srand
移动到main
作为第一行之一(不在循环内!)。我可以从你的评论栏中看到你在某个时候打算这样做。