Comment interdire l'utilisation de la fonction arc4random pour certains nubers?arc4random sauf quelques chiffres
Code actuel:
int random = (arc4random() % 92);
(nombres de 0 à 92)
Je veux ne désapprouve les numéros suivants: 31, 70, 91, 92
Comment interdire l'utilisation de la fonction arc4random pour certains nubers?arc4random sauf quelques chiffres
Code actuel:
int random = (arc4random() % 92);
(nombres de 0 à 92)
Je veux ne désapprouve les numéros suivants: 31, 70, 91, 92
D'abord, vous devrez changer
% 92
à
% 93
pour obtenir les numéros de 0..92
je ferais quelque chose comme ça
int random;
do {
random = arc4random() % 93;
}
while (random == 31 || random == 70 || random == 91 || random == 92);
simple, continuent à demander des numéros:
get a new random number
while the new number is one of the disallowed ones:
get a new random number
return the random number
Pseudo code, mais vous devriez avoir l'idée.
Oui, c'est compris. :) – Emil
Si vous allez interdire les numéros 91 et 92, pourquoi ne pas les inclure dans votre mod?
L'expansion de la réponse précédente:
int random;
do {
random = arc4random() % 91;
}
while (random == 31 || random == 70);
@harwig - J'y pensais aussi. Cependant, les laisser à l'intérieur, bien que moins efficaces du point de vue du codage et de l'exécution, sert à documenter le fait que nous excluons explicitement ces valeurs, au cas où quelqu'un déciderait de changer le module dans quelques années. –
@ Bob Kaufman - très bon point, car je suis sûr que cela pourrait être une cause potentielle de maux de tête majeurs à l'avenir. – harwig
Solution pour Swift:
func randomValue(except: Int) -> Int {
var rand: Int = 0;
repeat {
rand = Int(arc4random_uniform(3) + 1)
}
while(rand == except)
return Int(rand)
}
Merci, cela fonctionne pour une exception, mais pas pour une liste d'exceptions! :) – Emil
Ah, désolé, le code d'origine comptait un tableau, et je savais combien d'objets le tableau avait, donc Je viens d'écrire à la place :) Aidez-moi à comprendre le code; fondamentalement ce qu'il fait est d'obtenir un nombre aléatoire, et si le nombre est l'un des, obtenir un nouveau? merci (: – Emil
@Emil - correct.Si c'est l'une des valeurs interdites, il suffit d'appeler à nouveau la méthode –
Great! :) Merci, le code fonctionne :) – Emil