我已经看到很多关于这个特定主题的问题,但是没有一个对我有任何答案,因此我想到了这个问题。
我想生成一个介于[-1,1]之间的随机数。我该怎么做?
用 -1+2*((float)rand())/RAND_MAX
-1+2*((float)rand())/RAND_MAX
rand()生成[0,RAND_MAX]包含在内的整数,因此((float)rand())/RAND_MAX返回中的浮点数[0,1]。[-1,1]通过将其添加到中得到随机数-1。
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唯一的随机数。
RAND_MAX