Esta aplicación usa el srand () función para sembrar el generador de números aleatorios. La función Aleatorio (n) devuelve un entero en el rango de 1 a n.
La matriz int totales mantiene el recuento total de los puntajes de 3 a 18. Luego realiza un bucle de 10 millones de veces. Este número se define como una constante pero si su compilador no admite constante, elimine el comentario de #define.
Cada dado, d1, d2 y d3 contiene el Aleatorio() tirada de dados generada tirada y el elemento para la puntuación de dados combinada (en el rango 3-18) se incrementa.
La última parte imprime los totales para ver que genera tiros de acuerdo con las probabilidades. Un dado de 6 lados tiene un puntaje promedio de 3.5, por lo que tres dados deben promediar aproximadamente 10.5. Los totales para 10 y 11 son aproximadamente los mismos y ocurren aproximadamente el 12.5% del tiempo.
Aquí está el resultado de una ejecución típica. No toma más de un segundo.
Rolling Ten Million Dice
// dicerolls.c:
#include / * Necesario solo para srand seed * /
#incluir
#incluir
const tenmillion = 1000000L;
/ * #definir diez millones 10000000L * /
anular Aleatorizar ()
srand ((sin signo) tiempo (NULL));
int Random (int Max)
return (rand ()% Max) + 1;
int main (int argc, char * argv [])
int i;
int totales [19];
printf ("Rolling Ten Million Dice \ n");
Aleatorizar ();
para (i = 3; i<=18;i++)
totales [i] = 0;
para (i = 0; i< tenmillion;i++)
int d1 = Aleatorio (6);
int d2 = Aleatorio (6);
int d3 = Aleatorio (6);
int total = d1 + d2 + d3;
totales [total] ++;
para (i = 3; i<=18;i++)
printf ("% i% i \ n \ r", i, totales [i]);
devuelve 0;