我正在使用arc4random生成一個隨機數。我想在1-9之間生成一個數字。我如何排除0?如何排除arc4random中的數字?
int r = arc4random() % (9);
NSLog(@"Random Number: %d",r);
我正在使用arc4random生成一個隨機數。我想在1-9之間生成一個數字。我如何排除0?如何排除arc4random中的數字?
int r = arc4random() % (9);
NSLog(@"Random Number: %d",r);
int r = (arc4random() % 8) + 1
int r = arc4random()%8 + 1;
查看其他答案(例如,one from me)爲什麼您可能不想使用%
來完成此任務,您應該改用它。
你可以簡單地反覆嘗試,直到你得到你想要的範圍內的數字,扔出去,你不想要的數字。這在數學中有一個奇特的名字「驗收拒絕方法」。這很簡單,而且很有效。
如果你擔心這可能需要很長時間,理論上它可以。但是這種方法一直在統計應用中使用。隨着N增加,經歷N次循環的概率迅速減小,因此通過循環的平均次數很少。
您可以使用arc4random_uniform()
,在
arc4random_uniform(9) + 1
一般來說,產生lo
和hi
(含)之間的數字,你可以使用:
arc4random_uniform(hi - lo + 1) + lo
如果你不希望使用arc4random_uniform()
並且想要堅持arc4random()
,注意使用模量公式所得到的值不是均勻分佈的,請使用
(arc4random() % (hi - lo + 1)) + lo
+1簡單直接。 – 2011-04-06 02:54:44
如果你想排除範圍內的任何其他數字,這個答案不會真正起作用。 Sheehan Alams標題應該更加具體,比如「我希望arc4random從1開始」或「我想在使用arc4random時排除第一個數字」。只是說:) – Tommie 2013-02-22 10:20:37