El siguiente codigo simula un Sorteo/Loteria 10 Millones de veces tomando 30 muestras de estas simulaciones obtenemos un Valor de veces que se gano el sorteo.
El jugador elige un numero y en cada ciclo se sortean otro Numero si el numero es igual al del jugador este GANA.
Se realizan 2 Tipos de Sorteos:
- Uno donde el jugador conserva el MISMO numero todas las simulaciones.
- El otro donde el jugador CAMBIA el numero en cada simulación
Salida Obtenida en 4 ejecuciones:
Total de veces ganador CON cambio de Variable 30636/(300000000 Sorteos)
Total de veces ganador SIN cambio de Variable 27675/(300000000 Sorteos)
Total de veces ganador CON cambio de Variable 30396/(300000000 Sorteos)
Total de veces ganador SIN cambio de Variable 36592/(300000000 Sorteos)
Total de veces ganador CON cambio de Variable 30700/(300000000 Sorteos)
Total de veces ganador SIN cambio de Variable 36890/(300000000 Sorteos)
Total de veces ganador CON cambio de Variable 30635/(300000000 Sorteos)
Total de veces ganador SIN cambio de Variable 27460/(300000000 Sorteos)
Si Observamos en total son 300 Millones de simulaciones 2 veces en cada ejecución, si vemos el "promedio" se mantiene mas o menos constante cuando SI CAMBIA la variable.
y el "promedio" se varia entre ejecuciones cuando NO CAMBIA la variable.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MUESTRAS 30
#define SIMULACIONES 10000000
#define MAX 60000
int main() {
register int i = 0,j = 0;
int elegido,premio, contador = 0;
//Sorteos con cambio de Variable
j = 0;
while(j < MUESTRAS){
i = 0;
while(i < SIMULACIONES) {
elegido
= rand() % MAX
; // La variable elegida cambia en cada sorteo if(elegido == premio) {
contador++;
}
i++;
}
j++;
}
printf("Total de veces ganador CON cambio de Variable %i/(%i Sorteos)\n",contador
,MUESTRAS
*SIMULACIONES
);
//Sorteos SIN cambio de Variable
j = 0;
elegido
= rand() % MAX
; // La variable no cambia contador = 0;
while(j < MUESTRAS){
i = 0;
while(i < SIMULACIONES) {
if(elegido == premio) {
contador++;
}
i++;
}
j++;
}
printf("Total de veces ganador SIN cambio de Variable %i/(%i Sorteos)\n",contador
,MUESTRAS
*SIMULACIONES
); return 0;
}
Esto va de la mano con la siguiente pregunta:
¿Es bueno cambiar siempre de variable?Tema relacionado:
Demostracion del problema de Monty HallSaludos