随机双循环保持不变

时间:2017-11-29 10:03:51

标签: c random

我有以下c程序在循环中生成随机数。 虽然这适用于整数,但当我尝试生成0到1之间的随机双精度时,该值在整个循环中保持不变。

  • 为什么会这样?
  • 如何在循环中的[0,1]中生成随机双精度?

来源:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main(int argc, char** argv) {
    srand(time(NULL));
    for(int i=0; i<5; i++) {
        printf("%d\n", rand()); 
    }
    for(int i=0; i<5; i++) {
        printf("%d\n", (double) rand() / RAND_MAX); 
    }
}

输出:

>gcc -O3 -o test test.c -lm 
>./test
787380606
1210256636
1002592740
1410731589
737199770
-684428956
-684428956
-684428956
-684428956
-684428956

0 个答案:

没有答案