Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con aleatoriedad en simulador de volado en C

Estas en el tema de Problema con aleatoriedad en simulador de volado en C en el foro de C/C++ en Foros del Web. Hice este simulador de volado... el problema es que la semilla que uso es time(NULL)... y pues... al hacer los 100 volados, los 100 salen ...
  #1 (permalink)  
Antiguo 26/05/2011, 18:59
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 6 meses
Puntos: 8
Exclamación Problema con aleatoriedad en simulador de volado en C

Hice este simulador de volado... el problema es que la semilla que uso es time(NULL)... y pues... al hacer los 100 volados, los 100 salen iguales porque todo se calcula muy rapido y no pasa ni un segundo xD...

La única alternativa que se me ocurre es que el usuario ingrese la semilla mediante scanf... pero se me hace muy tosco... Alguna idea?

Éste es el código del programa:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int volado(void);
  5.  
  6. int main()
  7. {
  8.     int i = 1;
  9.     int moneda;
  10.     int cara = 0;
  11.     int cruz = 0;
  12.    
  13.     while(i <= 100){
  14.          moneda = volado();
  15.          if(moneda == 0){
  16.               printf("%d. Cara\n", i);
  17.               cara++;
  18.               }
  19.          else{
  20.               printf("%d. Cruz\n", i);
  21.               cruz++;
  22.               }
  23.          i++;
  24.          }
  25.     printf("\nCara: %d\tCruz: %d\n", cara, cruz);
  26.     getch();
  27.     return 0;
  28. }
  29.  
  30. int volado(void)
  31. {
  32.     int moneda;
  33.    
  34.     srand(time(NULL));
  35.     moneda = (rand() % 2);
  36.    
  37.     if(moneda == 0)
  38.          return 0;
  39.     else
  40.          return 1;
  41. }

Saludos!! :)
  #2 (permalink)  
Antiguo 26/05/2011, 20:41
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Problema con aleatoriedad en simulador de volado en C

Proba tirando la semilla una sola vez...no cada vez que lo llamas.
  #3 (permalink)  
Antiguo 26/05/2011, 20:52
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: Problema con aleatoriedad en simulador de volado en C

Ohhh... muchas gracias xD

Quedó así:

Código C:
Ver original
  1. #include <stdlib.h>
  2.  
  3. int volado(void);
  4.  
  5. int main()
  6. {
  7.     int i = 1;
  8.     int moneda;
  9.     int cara = 0;
  10.     int cruz = 0;
  11.    
  12.     srand(time(NULL));
  13.    
  14.     while(i <= 100){
  15.          moneda = volado();
  16.          if(moneda == 0){
  17.               printf("%d. Cara\n", i);
  18.               cara++;
  19.               }
  20.          else{
  21.               printf("%d. Cruz\n", i);
  22.               cruz++;
  23.               }
  24.          i++;
  25.          }
  26.     printf("\nCara: %d\tCruz: %d\n", cara, cruz);
  27.     getch();
  28.     return 0;
  29. }
  30.  
  31. int volado(void)
  32. {
  33.     int moneda;
  34.    
  35.     moneda = (rand() % 2);
  36.    
  37.     if(moneda == 0)
  38.          return 0;
  39.     else
  40.          return 1;
  41. }

Saludos!

Etiquetas: simulador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:18.