web-dev-qa-db-fra.com

générateur de nombres aléatoires iOS vers une nouvelle vue

J'ai besoin d'aide avec une application. Je dois créer un générateur de nombres aléatoires pour les nombres entiers compris entre zéro et quinze, qui, en fonction du nombre créé, seront envoyés à une vue avec le nombre correspondant. C'est comme ça que je veux que ça marche

Appuyez sur un bouton -> Le générateur de nombres aléatoires donne un nombre compris entre 0 et 15 -> La vue permet de passer à une autre vue ayant reçu le numéro attribué par le générateur de nombres aléatoires.

Quelqu'un peut-il m'aider avec le code? Merci

26
Sam

arc4random() est la fonction standard du générateur de nombres aléatoires Objective-C. Cela vous donnera un nombre compris entre zéro et ... eh bien, plus de quinze! Vous pouvez générer un nombre compris entre 0 et 15 (donc, 0, 1, 2, ... 15) avec le code suivant:

NSInteger randomNumber = arc4random() % 16;

Ensuite, vous pouvez effectuer un basculement ou une série d'instructions if/else sur Envoyer un autre contrôleur de vue:

UIViewController *viewController = nil;
switch (randomNumber)
{
    case 0:
        viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    break;
    // etc ...
}

[self.navigationController pushViewController:viewController animated:YES];

Ou plutôt, en relisant la question, cela ressemblerait à ceci:

UIViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" 
viewController.number = randomNumber;

Et vous auriez une propriété NSInteger sur la sous-classe MyViewController.

96
Ash Furrow

Vous pouvez utiliser arc4random_uniform

NSUInteger r = arc4random_uniform(16);
19
Rémy Virin

Selon Apple, le meilleur moyen consiste à utiliser arc4random_uniform et à dépasser la limite supérieure:

arc4random_uniform(16)

De la docs:

arc4random_uniform () retournera un nombre aléatoire uniformément distribué inférieur à upper_bound. arc4random_uniform () est recommandé par rapport à des constructions telles que «arc4random ()% upper_bound», car elles évitent «modulo biais» lorsque la borne supérieure n’est pas une puissance de deux.

https://developer.Apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/arc4random.3.html

10
frodo2975
    int randomIndex = arc4random() % 14 + 1 ; // gives no .between 1 to 15 ..

    switch (randomIndex)
{
    case 0 :
    Push view 1 ;
    break;

    case 1:
    ...

}
9
Shubhank

Dans Swift 4.2, nous n’avons pas à appeler une fonction "arc4random_uniform" pour créer des nombres aléatoires, nous pouvons maintenant appeler une fonction "random (in: RANGE)".

//Create Random numbers Swift 4.2

//Int
let randomInt = Int.random(in: 1...10)

//Double
let radomDouble = Double.random(in: 1...10)

//Float
let randomFloat = Double.random(in: 1...10)
0
Blahji

Nous pouvons utiliser la fonction C Rand() pour cela:

Cela génère un entier compris entre 1 et 30. Vous pouvez également utiliser la fonction arc4random comme ceci:

int i = arc4random() % 30;
NSLog(@"Random Number: %i", i);
0
user3917303