为什么只有0.000000来自伪随机数发生器?

时间:2014-03-05 04:20:18

标签: c random

为什么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;
}

1 个答案:

答案 0 :(得分:4)

请注意,rand_float的返回类型为int

因此[0,1)值(在float中)被隐式转换0(一个int),这就是函数将返回的所有内容。

修复返回类型 - 将其从int更改为float

此外,要么向前声明rand_float函数,要么在主函数之前移动函数定义..并查看主要问题的其他注释。启用(和读取)编译器警告,以获取有关[可能]有问题的代码的提示!