iOS arc4random不是从0开始
问题描述:
我用arc4random来创建一个随机数,有没有办法告诉arc4random从例如-5开始而不是0?因为我想创建一个在 -3,4到4,3范围内的随机数,所以在iOS开发中我还没有那么好,那么如果不能使用arc4random,我还有什么其他可能性?(链接赞赏如果theres一个指南或类似的东西)iOS arc4random不是从0开始
答
首先,使用arc4random_uniform
以获得在所希望的绝对范围的随机数(为-3〜4这将是7):arc4random_uniform(7)
。
您可能还会看到arc4random() % max
表格,但这会引入模数偏差,从而使分布更加随机,arc4random_uniform
是首选。
之后,调整下限:
arc4random_uniform(7) - 3
答
由于arc4random() % n
返回从0..n-1的整数,arc4random() % (n - k) + k
从k..n-1返回一个。插入k = -5。那是你需要的吗?
答
如果你希望它在-5而不是从0开始,就减去5
如果你想创建在-3至4范围内的随机数,只要创建从0到7号并从中减去3。
arc4random
函数为您提供了一个从零到4,294,967,295的数字。要将它从0改为7,只需除以613,566,756即可。 (或者使用arc4random_uniform
以避免任何偏压)
根据文档: “arc4random_uniform()建议对像''arc4random()%UPPER_BOUND'结构,因为它避免了 ”模上偏差“,当上限不是二的幂。” – Femaref 2012-07-22 00:08:53