Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中获得一个范围为的浮点随机数?_C_Random - Fatal编程技术网

如何在C中获得一个范围为的浮点随机数?

如何在C中获得一个范围为的浮点随机数?,c,random,C,Random,我正在学习C,我试图得到一个10到20之间的随机浮点数。这就是我到目前为止所做的: srand(time(NULL)); float x = (float) rand() / (float) (RAND_MAX) * 10 + 20; printf("%f\n", x ); 每当我跑步时,它只会给我一个大约20.103979的数字。我做错了什么?如何纠正它?这将为您提供一个从20到30的范围。想想当rand给出0时会发生什么,当它给出rand\u MAX时会发生

我正在学习C,我试图得到一个10到20之间的随机浮点数。这就是我到目前为止所做的:

  srand(time(NULL));
  float x = (float) rand() / (float) (RAND_MAX) * 10 + 20;
  printf("%f\n", x );

每当我跑步时,它只会给我一个大约20.103979的数字。我做错了什么?如何纠正它?

这将为您提供一个从
20
30
的范围。想想当
rand
给出
0
时会发生什么,当它给出
rand\u MAX
时会发生什么。您还应该知道,您将获得范围内非常有限的可能值子集。@EugeneSh。为什么它会给我一个有限的值范围?我如何才能使它不给我一个有限的值范围?因为
rand
只能生成
rand\u MAX+1
不同的值。与
[10,20]
:)范围内的实值连续体相比,这是非常有限的,因为
RAND_MAX
的值可能小到
32767
。使用
float
,如果
RAND_MAX
2147483647
(2^31-1),则可以获得更好的可能值分布;使用
double
,可能会有很多无法生成的值。感谢大家,您的评论提供了帮助。