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)
无论如何,造成这种情况的原因是什么?如何解决这个问题?
谢谢!
你的代码意味着:
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)