Comment lancer des dés en C, C ++ et C #?

Cette application utilise le srand () pour amorcer le générateur de nombres aléatoires. La fonction Aléatoire (n) renvoie un entier compris entre 1 et n.

Le tableau int totaux détient le nombre total pour les scores 3 à 18. Il boucle ensuite 10 millions de fois. Ce nombre est défini comme un const mais si votre compilateur ne prend pas en charge const, décommentez le #define à la place.

Chaque dé, d1, d2 et d3 détient le Aléatoire() le jet de dé généré lance le jet de dé et l'élément pour le score de dés combiné (dans la plage 3-18) est incrémenté.

La dernière partie imprime les totaux pour voir qu'elle génère des lancers en fonction des probabilités. Un dé à 6 faces a un score moyen de 3,5, donc trois dés devraient en moyenne environ 10,5. Les totaux pour 10 et 11 sont à peu près les mêmes et se produisent environ 12,5% du temps.

Voici la sortie d'une exécution typique. Cela ne prend pas plus d'une seconde.

Lancer dix millions de dés

  • 3 46130
  • 4 138608
  • 5 277278
  • 6 462607
  • 7 695381
  • 8 972020
  • 9 1158347
  • 10 1253671
  • 11 1249267
  • 12 1156480
  • 13 972005
  • 14 692874
  • 15 462452
  • 16 277575
  • 17 139142
  • 18 46163
 // dicerolls.c:
#include / * Nécessaire uniquement pour les graines de srand * /
#comprendre
#comprendre
const tenmillion = 1000000L;
/ * #define tenmillion 10000000L * /
void Randomize ()
srand ((non signé) time (NULL));

int Aléatoire (int Max)
return (rand ()% Max) + 1;

int main (int argc, char * argv [])

int i;
int totaux [19];
printf ("Rolling Ten Million Dice \ n");
Randomize ();
pour (i = 3; i<=18;i++)
totaux [i] = 0;
pour (i = 0; i< tenmillion;i++)

int d1 = aléatoire (6);
int d2 = aléatoire (6);
int d3 = aléatoire (6);
int total = d1 + d2 + d3;
totaux [total] ++;

pour (i = 3; i<=18;i++)

printf ("% i% i \ n \ r", i, totaux [i]);

retourner 0;