为什么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;
}
答案 0 :(得分:4)
请注意,rand_float的返回类型为int
。
因此[0,1)
值(在float中)被隐式转换到0
(一个int),这就是函数将返回的所有内容。
修复返回类型 - 将其从int
更改为float
。
此外,要么向前声明rand_float函数,要么在主函数之前移动函数定义..并查看主要问题的其他注释。启用(和读取)编译器警告,以获取有关[可能]有问题的代码的提示!