Comment fonctionne le générateur de nombres aléatoires de C#?

je me demandais comment fonctionne le générateur de nombres aléatoires en C#. J'étais aussi curieux de savoir comment je pouvais faire un programme qui génère des nombres aléatoires entier entier de 1-100.

29
demandé sur Sam 2012-11-24 13:29:50

3 réponses

je me demandais comment fonctionne le générateur de nombres aléatoires en C#.

c'est spécifique à la mise en œuvre, mais l'entrée wikipedia pour les générateurs de nombres pseudo-aléatoires devrait vous donner quelques idées.

j'étais aussi curieux de savoir comment je pouvais faire un programme qui génère des nombres entiers aléatoires de 1-100.

vous pouvez utiliser Random.Next(int, int) :

Random rng = new Random();
for (int i = 0; i < 10; i++)
{
    Console.WriteLine(rng.Next(1, 101));
}

notez que la limite supérieure est exclusive - c'est pourquoi j'ai utilisé 101 ici.

vous devriez également être conscient de certains des "gotchas" associés à Random - en particulier, vous devriez pas créer une nouvelle instance chaque fois que vous voulez générer un nombre aléatoire, comme sinon si vous générez beaucoup de nombres aléatoires dans un court laps de temps, vous verrez beaucoup de répétitions. Voir mon article sur ce sujet pour plus de détails.

20
répondu Jon Skeet 2012-11-24 09:33:04

vous pouvez utiliser Random.Next(int maxValue) :

Retour : Un entier signé 32 bits supérieur ou égal à zéro et inférieure à maxValue; c'est, la plage des valeurs de retour comprend ordinairement zéro mais pas maxValue. Cependant, si maxValue égale zéro, maxValue est retourner.

var r = new Random();
// print random integer >= 0 and  < 100
Console.WriteLine(r.Next(100));

pour ce cas cependant vous pouvez utiliser Random.Next(int minValue, int maxValue) , comme ceci:

// print random integer >= 1 and < 101
Console.WriteLine(r.Next(1, 101);)
// or perhaps (if you have this specific case)
Console.WriteLine(r.Next(100) + 1);
32
répondu Zbigniew 2012-11-24 10:39:25

je cherche RNG sur internet depuis un moment maintenant. Tout ce que j'ai vu était soit trop complexe ou n'était pas ce que je cherchais. Après avoir lu quelques articles, j'ai pu trouver ce code simple.

{
  Random rnd = new Random(DateTime.Now.Millisecond);
  int[] b = new int[10] { 5, 8, 1, 7, 3, 2, 9, 0, 4, 6 };
  textBox1.Text = Convert.ToString(b[rnd.Next(10)])
}

explication Simple,

  1. créer un tableau entier de 1 Dimension.
  2. complète le tableau avec des nombres non ordonnés.
  3. utilisez le rnd.La prochaine pour obtenir la position le nombre qui sera choisi.

cela fonctionne bien.

pour obtenir un nombre aléatoire inférieur à 100, utiliser

{
  Random rnd = new Random(DateTime.Now.Millisecond);
  int[] b = new int[10] { 5, 8, 1, 7, 3, 2, 9, 0, 4, 6 };
  int[] d = new int[10] { 9, 4, 7, 2, 8, 0, 5, 1, 3, 4 };
  textBox1.Text = Convert.ToString(b[rnd.Next(10)]) + Convert.ToString(d[rnd.Next(10)]);
}

et ainsi de suite pour 3, 4, 5, et 6 ... chiffres des nombres aléatoires.

espérons que cela aide quelqu'un positivement.

1
répondu Arrai 2013-03-13 14:46:39