一尘不染

生成C中[-1,1]之间的随机数?

algorithm

我已经看到很多关于这个特定主题的问题,但是没有一个对我有任何答案,因此我想到了这个问题。

我想生成一个介于[-1,1]之间的随机数。我该怎么做?


阅读 436

收藏
2020-07-28

共1个答案

一尘不染

-1+2*((float)rand())/RAND_MAX

rand()生成[0,RAND_MAX]包含在内的整数,因此((float)rand())/RAND_MAX返回中的浮点数[0,1][-1,1]通过将其添加到中得到随机数-1

编辑:( 添加评论部分的相关部分)

关于此方法的局限性:

((float)rand())/RAND_MAX返回一个百分比(从0到1的分数)。因此,由于-1到1之间的范围是2个整数,因此我将该分数乘以2,然后将其加到所需的最小数字-1上。这也告诉您有关随机数的质量,因为您将只有RAND_MAX唯一的随机数。

2020-07-28