为什么 rand_float 只返回值 0.000000?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int test, int numpoints, int numtrials, int dimension){
//generate a random number
float r = rand_float();
//print it
printf("%f", r);
printf("\n");
}
//function generates a random float in [0,1]
int rand_float(){
srand(time(NULL));
return (float)rand()/RAND_MAX;
}
最佳答案
注意 rand_float 的返回类型是 int
。
因此,[0,1)
值(在 float 中)被隐式转换为 0
(一个 int),即所有该函数都会返回。
修复返回类型 - 将其从 int
更改为 float
。
另外,要么前向声明 rand_float 函数,要么将函数定义移到主函数之前..并查看关于您的主要问题的其他评论。启用(并读取)编译器警告,以获取有关[可能]有问题的代码的提示!
关于c - 为什么伪随机数生成器只有 0.000000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188447/