目标c中的随机值给出了错误的数字

时间:2014-12-26 15:22:51

标签: objective-c random arc4random

我需要在范围[-1,1]中获得随机浮点值。

    CGFloat max = 1;
    CGFloat min = -1;

我使用以下代码:

((float)arc4random()/RAND_MAX)*(max-min)+min

但我得到-1.007到2.879之间的值,依此类推。哪里有问题。谢谢。

1 个答案:

答案 0 :(得分:1)

RAND_MAX不是arc4random()的最大值。 arc4random()返回整个u_int32_t范围内的数字(0到(2 ^ 32)-1),这个范围比rand()更大。

此外,float不足以将该范围内的所有值保持为完全精确度。

尝试:

((double)arc4random() / UINT32_MAX) * (max - min) + min