c - 为什么伪随机数生成器只有 0.000000?

标签 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;
}

最佳答案

注意 rand_float 的返回类型是 int

因此,[0,1) 值(在 float 中)被隐式转换0(一个 int),即所有该函数都会返回。

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

另外,要么前向声明 rand_float 函数,要么将函数定义移到主函数之前..并查看关于您的主要问题的其他评论。启用(并读取)编译器警告,以获取有关[可能]有问题的代码的提示!

关于c - 为什么伪随机数生成器只有 0.000000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188447/

相关文章:

c++ - 哪个熵更高?

list - ( Dart/flutter )从混洗的列表中拉出一项而不重新生成列表

c++ - 在 C/C++ 中按照正态分布生成随机数

类型转换指针?

C 编程编译问题

c - gdb 何时将变量标记为 "not available"?

python - python中的随机字节字符串

php - 用表达式中的一项替换花括号表达式

c - malloc,免费 : error invalid next size(fast)

c++ - Visual Studio 2010 非常慢,无法使用