如何在C中获得一个范围为的浮点随机数?
我正在学习C,我试图得到一个10到20之间的随机浮点数。这就是我到目前为止所做的:如何在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时会发生
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
,可能会有很多无法生成的值。感谢大家,您的评论提供了帮助。