我需要在范围[-1,1]中获得随机浮点值。
CGFloat max = 1;
CGFloat min = -1;
我使用以下代码:
((float)arc4random()/RAND_MAX)*(max-min)+min
但我得到-1.007到2.879之间的值,依此类推。哪里有问题。谢谢。
答案 0 :(得分:1)
RAND_MAX
不是arc4random()
的最大值。 arc4random()
返回整个u_int32_t
范围内的数字(0到(2 ^ 32)-1),这个范围比rand()
更大。
此外,float
不足以将该范围内的所有值保持为完全精确度。
尝试:
((double)arc4random() / UINT32_MAX) * (max - min) + min