arc4random кроме некоторых чисел - PullRequest
0 голосов
/ 26 февраля 2010

Как можно запретить выбор некоторых нуберов с помощью функции arc4random?

Текущий код:

int random = (arc4random() % 92);

(цифры от 0 до 92)

Я хочу запретить следующие цифры: 31, 70, 91, 92

Ответы [ 4 ]

9 голосов
/ 26 февраля 2010

Во-первых, вам нужно изменить

% 92

до

% 93

чтобы получить числа от 0,92

Я бы сделал что-то вроде этого

int random;

do {
    random = arc4random() % 93;
}
while ( random == 31 || random == 70 || random == 91 || random == 92 );
4 голосов
/ 26 февраля 2010

Если вы собираетесь запретить номера 91 и 92, зачем их включать в ваш мод?

В продолжение предыдущего ответа:

int random;
do {
    random = arc4random() % 91;
}
while ( random == 31 || random == 70 );
2 голосов
/ 26 февраля 2010

Простой, продолжайте спрашивать номера:

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

Псевдокод, но вы должны понять.

0 голосов
/ 06 августа 2017

Решение для Swift:

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

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

    return Int(rand)
}
...