Deze applicatie maakt gebruik van de srand () functie om de random number generator te zaaien. De functie Random (n) retourneert een geheel getal in het bereik van 1 tot n.
De int array totalen houdt het totaal aantal punten voor de scores 3 tot 18. Het loopt dan 10 miljoen keer. Dit nummer is gedefinieerd als een const, maar als uw compiler const niet ondersteunt, annuleer dan de #define.
Elke dobbelsteen, d1, d2 en d3 bevat de Willekeurig() gegenereerde dobbelsteenworp die worp en het element voor de gecombineerde dobbelstenen score (in het bereik 3-18) wordt verhoogd.
Het laatste deel drukt de totalen af om te zien dat het worpen genereert in overeenstemming met de waarschijnlijkheden. Een 6-zijdige dobbelsteen heeft een gemiddelde score van 3,5, dus drie dobbelstenen moeten gemiddeld ongeveer 10,5 zijn. De totalen voor 10 en 11 zijn ongeveer hetzelfde en komen ongeveer 12,5% van de tijd voor.
Hier is de uitvoer van een typische run. Het duurt niet langer dan een seconde.
Dobbelen met tien miljoen dobbelstenen
// dicerolls.c:
#include / * Alleen nodig voor schandzaad * /
#include
#include
const tienmiljoen = 1000000L;
/ * #define tenmillion 10000000L * /
void Randomize ()
srand ((niet ondertekend) tijd (NULL));
int Willekeurig (int Max)
rendement (rand ()% Max) + 1;
int main (int argc, char * argv [])
int i;
int totalen [19];
printf ("Rolling Ten Million Dice \ n");
Randomiseren ();
voor (i = 3; i<=18;i++)
totalen [i] = 0;
voor (i = 0; i< tenmillion;i++)
int d1 = willekeurig (6);
int d2 = willekeurig (6);
int d3 = willekeurig (6);
int totaal = d1 + d2 + d3;
totalen [totaal] ++;
voor (i = 3; i<=18;i++)
printf ("% i% i \ n \ r", i, totalen [i]);
terugkeer 0;