Sorteo/Loteria Simulaciones y cambios de Variable

Iniciado por AlbertoBSD, 29 Agosto 2016, 18:36 PM

0 Miembros y 1 Visitante están viendo este tema.

AlbertoBSD

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;
srand(time(NULL));

//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
premio = rand() % MAX;
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) {
premio = rand() % MAX;
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 Hall

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Poyoncio

Me parecen muy interesantes estos pequeños (que yo por lo menos tardaria un dia en realizar) programas para comprobar teorias, lastima que aun me falte un poco de nivel para comprender el codigo al 100%, espero que pronto te pueda seguir el ritmo jeje :P

PD Por lo que he entendido y visto en la ejecucion del programa, diria que se tienen mas probabilidades si se cambian de variables.


Saludos! ;)
Curso de ensamblador desde cero