我正在使用 arc4random 生成一个随机数。我想生成一个 1-9 之间的数字。如何排除 0?
int r = arc4random() % (9);
NSLog(@"Random Number: %d",r);
我正在使用 arc4random 生成一个随机数。我想生成一个 1-9 之间的数字。如何排除 0?
int r = arc4random() % (9);
NSLog(@"Random Number: %d",r);
int r = (arc4random() % 8) + 1
您可以使用arc4random_uniform()
, 如
arc4random_uniform(9) + 1
通常,要生成介于lo
和hi
(含)之间的数字,请使用:
arc4random_uniform(hi - lo + 1) + lo
如果您不想使用arc4random_uniform()
并坚持使用arc4random()
,请注意使用模数公式的结果值不是均匀分布的,请使用
(arc4random() % (hi - lo + 1)) + lo
int r = arc4random() % 8 + 1;
请参阅其他答案(例如,来自我的答案),了解您可能不想%
用于此任务的原因,以及您应该使用什么。
您可以简单地反复尝试,直到获得所需范围内的数字,然后丢弃您不想要的数字。这在数学中有一个花哨的名称“接受-拒绝方法”。这很简单,而且有效。
如果您担心这可能需要很长时间,理论上可以。但是这种方法一直在统计应用中使用。通过一个while循环N次的概率随着N的增加而迅速减小,因此通过循环的平均次数很小。