Depuis iOS 9 et OS X 10.11, vous pouvez utiliser les nouvelles classes GameplayKit pour générer des nombres aléatoires de différentes manières.
Vous avez le choix entre quatre types de sources: une source aléatoire générale (sans nom, jusqu'au système pour choisir ce qu'il fait), congruentielle linéaire, ARC4 et Mersenne Twister. Ceux-ci peuvent générer des ints, des flottants et des bools aléatoires.
Au niveau le plus simple, vous pouvez générer un nombre aléatoire à partir de la source aléatoire intégrée du système comme ceci:
NSInteger rand = [[GKRandomSource sharedRandom] nextInt];
Cela génère un nombre compris entre -2 147 483 648 et 2 147 483 647. Si vous voulez un nombre entre 0 et une limite supérieure (exclusive), vous utiliseriez ceci:
NSInteger rand6 = [[GKRandomSource sharedRandom] nextIntWithUpperBound:6];
GameplayKit a des constructeurs de commodité intégrés pour fonctionner avec les dés. Par exemple, vous pouvez lancer un dé à six faces comme ceci:
GKRandomDistribution *d6 = [GKRandomDistribution d6];
[d6 nextInt];
De plus, vous pouvez façonner la distribution aléatoire en utilisant des choses comme GKShuffledDistribution
.
arc4random_uniform(x)
comme décrit ci-dessous par @yood. Il se trouve également dans stdlib.h (après OS X 10.7 et iOS 4.3) et donne une distribution plus uniforme des nombres aléatoires. Utilisationint r = arc4random_uniform(74);