你怎麼能不允許使用arc4random函數選擇一些nubers?arc4random除了一些數字
當前代碼:
int random = (arc4random() % 92);
(數字從0到92)
我希望它也禁止下列號碼:31, 70, 91, 92
你怎麼能不允許使用arc4random函數選擇一些nubers?arc4random除了一些數字
當前代碼:
int random = (arc4random() % 92);
(數字從0到92)
我希望它也禁止下列號碼:31, 70, 91, 92
首先,你需要改變
% 92
到
% 93
從0..92
得到的數字我會做這樣的事情
int random;
do {
random = arc4random() % 93;
}
while (random == 31 || random == 70 || random == 91 || random == 92);
簡單,繼續要求數字:
get a new random number
while the new number is one of the disallowed ones:
get a new random number
return the random number
僞代碼,但你應該明白這個主意。
是的,明白了。 :) – Emil 2010-02-26 20:51:09
如果你打算不允許數字91和92,爲什麼還要把它們包含在你的mod中呢?
擴大在以前的答案:
int random;
do {
random = arc4random() % 91;
}
while (random == 31 || random == 70);
@harwig - 我也在想這個。但是,儘管從編碼和執行的角度來看,它們的效率較低,但它們可以用來記錄我們明確排除這些值的事實,以防有人決定在幾年後改變模數。 – 2010-02-26 21:02:29
@鮑勃考夫曼 - 非常好的一點,因爲我相信這可能是未來令人頭疼的一個潛在原因。 – harwig 2010-03-01 14:03:21
解決方案斯威夫特:
func randomValue(except: Int) -> Int {
var rand: Int = 0;
repeat {
rand = Int(arc4random_uniform(3) + 1)
}
while(rand == except)
return Int(rand)
}
謝謝,這適用於一個例外,但不適用於例外列表! :) – Emil 2017-08-06 20:33:40
啊,對不起,原來的代碼指望一個數組,我知道數組有多少個對象了,所以我只是寫了,而不是:) 幫我理解代碼;基本上它是做一個隨機數字,如果這個數字是其中的任何一個,那麼得到一個新的?謝謝(: – Emil 2010-02-26 20:50:38
@Emil - 正確。如果它是一個不允許的值,只需再次調用該方法。 – 2010-02-26 21:01:11
太棒了!:)謝謝代碼正在工作:) – Emil 2010-02-26 21:50:15