Lin*_*int 4 iphone random xcode objective-c arc4random
int randomNumber = (arc4random() % 83) + 1;
Run Code Online (Sandbox Code Playgroud)
这是产生"最随机"数字的最佳方式吗?或者有更好的方法来生成随机数?
Chr*_*ung 13
当你使用时arc4random
,避免使用%
线性同余生成器(这是通常使用的算法rand
)的一个缺陷:低阶位不是随机的.
但是,你仍然有截断的问题:即,因为(1 << 32) % 83
是77,这意味着76号在0到(略)看起来比77和82之间的数字为避免这种情况更频繁,你应该扔掉传入的值(即通话arc4random
再次)如果它在上面(1 << 32) / 83 * 83
.
(我假设范围arc4random
从0到2 32 -1.相应地调整上述说明.)