arc4random除了一些数字

时间:2010-02-26 20:13:13

标签: objective-c iphone random

你如何禁止使用arc4random函数选择一些nubers?

当前代码:

int random = (arc4random() % 92);

(数字从0到92)

我希望它不允许使用以下数字:31, 70, 91, 92

4 个答案:

答案 0 :(得分:9)

首先,您需要更改

% 92

% 93

从0..92获取数字

我会做这样的事情

int random;

do {
    random = arc4random() % 93;
}
while ( random == 31 || random == 70 || random == 91 || random == 92 );

答案 1 :(得分:4)

如果你打算不允许使用数字91和92,为什么还要在你的mod中包含它们呢?

扩展上一个答案:

int random;
do {
    random = arc4random() % 91;
}
while ( random == 31 || random == 70 );

答案 2 :(得分:2)

简单,不断询问数字:

get a new random number
while the new number is one of the disallowed ones:
    get a new random number
return the random number

伪代码,但你应该明白这一点。

答案 3 :(得分:0)

Swift解决方案:

func randomValue(except: Int) -> Int {
    var rand: Int = 0;

    repeat {
        rand = Int(arc4random_uniform(3) + 1)
    }
    while(rand == except)

    return Int(rand)
}