gpt4 book ai didi

c - 按时间播种的随机数不会改变

转载 作者:行者123 更新时间:2023-11-30 19:03:51 25 4
gpt4 key购买 nike

为了生成 0 到 1 之间的随机数,我编写了以下代码:

 double random_0_to_1(){
srand (time(NULL));
random();
return (double)random() / (double)RAND_MAX;
}

int main(){

for(int i = 0 ; i < 10 ; i++){
double temp = random_0_to_1();
printf("%f\n", temp);
}
return 0;
}

然而,无论我调用多少次,生成的结果始终是相同的。总是生成相同的数字。我尝试了很多不同的方法,但似乎找不到任何有效的方法。有没有办法生成每次调用 random_0_to_1 时都不同的随机数?

最佳答案

您的代码中存在三个错误:

  1. 您正在调用 srand不止一次。您应该只调用srand一次,在main开头.
  2. 您正在使用 srand 初始化 RNG ,但随后您调用 random ,它使用不同的、不相关的 RNG。您应该调用rand .
  3. 您没有包含必要的 header ,<stdlib.h> , <time.h><stdio.h> ,因此您的代码具有未定义的行为。

关于c - 按时间播种的随机数不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53361337/

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