Questa applicazione utilizza il srand () funzione per seminare il generatore di numeri casuali. La funzione Random (n) restituisce un numero intero compreso tra 1 e n.
La matrice int totali contiene i conteggi totali per i punteggi da 3 a 18. Quindi passa 10 milioni di volte. Questo numero è definito come const ma se il tuo compilatore non supporta const, decommenta invece #define.
Ogni dado, d1, d2 e d3 contiene il Casuale() tiro di dado generato lancio di dado e l'elemento per il punteggio di dadi combinato (nell'intervallo 3-18) viene incrementato.
L'ultima parte stampa i totali per vedere che genera tiri in conformità con le probabilità. Un dado a 6 facce ha un punteggio medio di 3,5, quindi tre dadi dovrebbero avere una media di circa 10,5. I totali per 10 e 11 sono più o meno gli stessi e si verificano circa il 12,5% delle volte.
Ecco l'output di una corsa tipica. Non ci vuole più di un secondo.
Lancio di dieci milioni di dadi
// dicerolls.c:
#include / * Necessario solo per i semi di srand * /
#includere
#includere
const tenmillion = 1000000L;
/ * #define tenmillion 10000000L * /
void Randomize ()
srand ((unsigned) time (NULL));
int Casuale (int Max)
return (rand ()% Max) + 1;
int main (int argc, char * argv [])
int i;
totali int [19];
printf ("Lancio di dieci milioni di dadi \ n");
Rendi casuale() ;
per (i = 3; i<=18;i++)
totali [i] = 0;
per (i = 0; i< tenmillion;i++)
int d1 = Casuale (6);
int d2 = Casuale (6);
int d3 = Casuale (6);
int total = d1 + d2 + d3;
totali [totale] ++;
per (i = 3; i<=18;i++)
printf ("% i% i \ n \ r", i, totali [i]);
ritorna 0;