我目前有一种尝试在我提供的两个数字之间获取随机浮点数的方法,但是它无法正常工作。
例如,如果我将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
无论如何,导致这种情况的原因以及如何解决这个问题?
谢谢!
答案 0 :(得分:7)
您的代码意味着:
return (((float)arc4random() / ARC4RANDOM_MAX) * num2) - num1 + num1;
num2-num1
周围需要括号:
return ((float)arc4random() / ARC4RANDOM_MAX) * (num2-num1) + num1;