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
// 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;