要生成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
时都不同的随机数?
答案 0 :(得分:1)
您的代码中存在三个错误:
srand
。在srand
的开头,您应该只拨打一次main
。srand
初始化RNG,但是随后您要调用random
,它使用了另一个不相关的RNG。您应该打rand
。<stdlib.h>
,<time.h>
和<stdio.h>
,因此您的代码具有未定义的行为。