我读过here - 不了解太多 - 使用mod范围很糟糕。所以这是Objective-C的典型建议
int r = arc4random() % 45;
从0到45得到一个数字可能是一个坏主意(关于分布和这个公式偏好低位的情况)。在Objective-C中应该使用什么?
<讽刺>
我很高兴能够在使用高级语言(Java等人)之后终于学会了这些东西。明天我会尝试用两根树枝点火。 < /讽刺>
功能
答案 0 :(得分:1)
Java在这里与Objecive C一样高 - 在这种情况下,Java的Random.getInt()与arc4random相同,因为它们都返回一个32位的伪随机数。
URL中提出的问题(我在其他地方已经看到)是rand()
可以每32768重复一次 值。
虽然OSX的arc4random可能有(2 ** 1700)个州。
但是在伪随机生成器的所有用途中,您需要在使用它们之前了解它们的弱点,例如:某些生成器中的低位偏好以及OpenBSD arc4random man page中的注释
建议使用arc4random_uniform() 像``arc4random()这样的结构 %upper_bound''因为它避免了“模数” 偏见“当上限不是a时 两个人的力量。