Comment générer un nombre aléatoire int ?

Comment générer un nombre entier aléatoire en C# ?

Solution

La classe [Random][1] est utilisée pour créer des nombres aléatoires. (Pseudo-aléatoires, bien sûr.).

Exemple :

Random rnd = new Random();
int month  = rnd.Next(1, 13);  // creates a number between 1 and 12
int dice   = rnd.Next(1, 7);   // creates a number between 1 and 6
int card   = rnd.Next(52);     // creates a number between 0 and 51

Si vous avez l'intention de créer plus d'un nombre aléatoire, vous devriez conserver l'instance Random et la réutiliser. Si vous créez de nouvelles instances trop proches dans le temps, elles produiront la même série de nombres aléatoires car le générateur aléatoire est alimenté par l'horloge du système.

[1] : https://docs.microsoft.com/en-us/dotnet/api/system.random

Commentaires (7)

Attention, new Random() est ensemencé sur l'horodatage actuel.

Si vous voulez générer un seul nombre, vous pouvez utiliser :

new Random().Next( int.MinValue, int.MaxValue ).

Pour plus d'informations, consultez la classe Random, mais attention :

Cependant, comme l'horloge a une résolution finie, l'utilisation du constructeur sans paramètre pour créer différents objets Random en succession rapprochée crée des générateurs de nombres aléatoires qui produisent des séquences identiques de nombres aléatoires

N'utilisez donc pas ce code pour générer une série de nombres aléatoires.

Commentaires (3)
Random r = new Random();
int n = r.Next();
Commentaires (0)