两个数字之间随机浮动?

Sim*_*iwi 2 random floating-point ios

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

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

- (float)randomFloatBetween:(float)num1 andLargerFloat:(float)num2 {
    return ((float)arc4random() / ARC4RANDOM_MAX) * num2-num1 + num1;
}
Run Code Online (Sandbox Code Playgroud)

这是ARC4RANDOM_MAX

#define ARC4RANDOM_MAX 0x100000000
Run Code Online (Sandbox Code Playgroud)

无论如何,造成这种情况的原因是什么?如何解决这个问题?

谢谢!

Mar*_*ers 7

你的代码意味着:

return (((float)arc4random() / ARC4RANDOM_MAX) * num2) - num1 + num1;
Run Code Online (Sandbox Code Playgroud)

你需要围绕括号num2-num1:

return ((float)arc4random() / ARC4RANDOM_MAX) * (num2-num1) + num1;
Run Code Online (Sandbox Code Playgroud)