1 pièce(s) jointe(s)
Exercice autour de Random et résultat incompréhensible.
Bonjour tout le monde :),
je suis en train d'apprendre les bases du C#, je débute avec ce langage comme en programmation en général (excepté un peu de Basic au collège).
Je me suis donné un exercice consistant à simuler des lancers de dé à six faces en utilisant Random et à vérifier la distribution des résultat de ces lancers.
Jusqu'ici tout va bien sauf que, lorsque je vérifie le total de pourcentage (normalement 100%) je tombe sur 96 ou 97 ou 98% :weird:
Sauriez vous expliquer si j'ai fais une erreur quelque part dans mes calculs ou si il y a une mécanique invisible qui est à l'œuvre ici?
Merci d'avance pour votre temps et vos éventuelles réponses.
Le code en question :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| namespace ConsoleApp3
{
class Testeur
{
static void Main(string[] args)
{
int un = 0, deux = 0, trois = 0, quatre = 0, cinq = 0, six = 0, compte = 0, result = 0;
begin:
compte += 1;
Random rnd = new Random();
result = rnd.Next(1, 7);
switch(result)
{
case 1:
un += 1;
break;
case 2:
deux += 1;
break;
case 3:
trois += 1;
break;
case 4:
quatre += 1;
break;
case 5:
cinq += 1;
break;
case 6:
six += 1;
break;
};
if (compte == 100000)
{
int totalPerCent = 0;
un = un / 1000;
deux = deux / 1000;
trois = trois / 1000;
quatre = quatre / 1000;
cinq = cinq / 1000;
six = six / 1000;
totalPerCent = un + deux + trois + quatre + cinq + six;
Console.WriteLine("Il y a " + un + "% de lancers de valeur 1");
Console.WriteLine("Il y a " + deux + "% de lancers de valeur 2");
Console.WriteLine("Il y a " + trois + "% de lancers de valeur 3");
Console.WriteLine("Il y a " + quatre + "% de lancers de valeur 4");
Console.WriteLine("Il y a " + cinq + "% de lancers de valeur 5");
Console.WriteLine("Il y a " + six + "% de lancers de valeur 6");
Console.WriteLine("Ce qui donne " + totalPerCent + "% !!??!!");
Console.ReadKey(true);
}
else
goto begin;
}
static int RollDice(int result)
{
Random rnd = new Random();
result = rnd.Next(1, 7);
return result;
}
}
} |
Le résultat :
Pièce jointe 351761