两个数字之间随机浮动?

时间:2012-07-16 21:27:37

标签: ios random floating-point

我目前有一种尝试在我提供的两个数字之间获取随机浮点数的方法,但是它无法正常工作。

例如,如果我将4.0作为较低浮点数并且4.5作为较高浮点数提供,则得到的结果类似于0.8或1.2,有时它在这两个数字之间。所以这让我相信这种方法并不好。这是方法:

- (float)randomFloatBetween:(float)num1 andLargerFloat:(float)num2 {
    return ((float)arc4random() / ARC4RANDOM_MAX) * num2-num1 + num1;
}

这是ARC4RANDOM_MAX

#define ARC4RANDOM_MAX 0x100000000

无论如何,导致这种情况的原因以及如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:7)

您的代码意味着:

return (((float)arc4random() / ARC4RANDOM_MAX) * num2) - num1 + num1;

num2-num1周围需要括号:

return ((float)arc4random() / ARC4RANDOM_MAX) * (num2-num1) + num1;