Această aplicație folosește funcția srand () funcție pentru semințiat generatorul de numere aleatorii. Functia Random (n) returnează un număr întreg în intervalul de la 1 la n.
Matricea de int totaluri deține numărul total pentru scorurile de la 3 la 18. Apoi bucle de 10 milioane de ori. Acest număr este definit ca o const, dar dacă compilatorul dvs. nu acceptă const, debutați în loc de #define.
Fiecare zar, d1, d2 și d3 deține Aleatoriu() rola de zar generată de zar și elementul pentru scorul de zar combinat (în intervalul 3-18) este incrementat.
Ultima parte tipărește totalul pentru a vedea că generează aruncări în conformitate cu probabilitățile. Un zar cu 6 fețe are un scor mediu de 3,5, deci trei zaruri ar trebui să medieze aproximativ 10,5. Totalurile pentru 10 și 11 sunt aproximativ aceleași și apar aproximativ 12,5% din timp.
Iată rezultatul unei rulări tipice. Nu durează mai mult de o secundă.
Rolling Ten Millions Zice
// dicerolls.c:
#include / * Necesar doar pentru semințe srand * /
#include
#include
const tenmillion = 1000000L;
/ * #define zece miliarde 10000000L * /
void Randomize ()
timp srand ((nesemnat) (NULL));
int Aleatoriu (maxim Max)
returnare (rand ()% Max) + 1;
int main (int argc, char * argv [])
int i;
totaluri int [19];
printf ("Rolling Ten Millions Zice \ n");
Randomize ();
pentru (i = 3; i<=18;i++)
totaluri [i] = 0;
pentru (i = 0; i< tenmillion;i++)
int d1 = Aleator (6);
int d2 = Aleator (6);
int d3 = Întâmplător (6);
int total = d1 + d2 + d3;
totaluri [total] ++;
pentru (i = 3; i<=18;i++)
printf ("% i% i \ n \ r", i, total [i]);
returnare 0;