gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:14:37 26 4
gpt4 key购买 nike

我注意到如果我使用 rand()要在循环内生成随机值,它将在每次迭代时更改该值。然而,即使通过 srand() 播种, for 函数调用之间的情况也并非如此。 .

#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() 在每次函数调用中刷新其值?

最佳答案

每个程序仅种子一次。将 srand 移动到 main 作为第一行之一(不在循环内!)。从您注释掉的行中我可以看出您在某个时候有意这样做。

关于c - rand() 不会更新函数调用之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33788315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com