Aprende programación






30 sept 2009

Experimento práctico - Dos cumpleaños en un mismo día


Ayer estube viendo el capítulo de redes y en uno de los comentarios del experto lanza una pregunta. ¿Cuantas personas tienen que haber para que haya un 50% de probabilidad en la que dos personas cumplan los años el mismo día?

http://www.smartplanet.es/redesblog/?p=506

El experto comento que la gente suele decir mucho pero que con 23 personas es suficiente. Esto me extrañó mucho por lo que quise comprobarlo por mi cuenta mediante un algoritmo.

Para ello reiterando la misma operacion de 1 a 30 personas y para cada caso crear números al azar entre 365 y utilizando un HashSet para comprobar si se repite sería suficiente. En menos de 30 líneas se puede comprobar. Dejo aquí el código:

import java.util.HashSet;

public class Main {

   public static void main(String arg[]){
      for (int personas=1;personas<=30;personas++){
      long nRepetidos=0;
      for (int n=0;n<1000;n++){
         HashSet ht=new HashSet();
         boolean bRep=false;
         for (int o=0;o<personas && !bRep;o++){
         int a=(int)((Math.random())*365);
         if (ht.contains(a)){
             bRep=true;
         }else{
             ht.add(a);
             }
         }
         if (bRep)
             nRepetidos++;
         }
         System.out.println("Personas:" + personas + " " + (nRepetidos/10) + "%" );
     }
   }
}



Tras ejecutar este algoritmo el resultado que dió es...
Personas:1 0%
Personas:2 0%
Personas:3 0%
Personas:4 2%
Personas:5 3%
Personas:6 3%
Personas:7 4%
Personas:8 8%
Personas:9 7%
Personas:10 12%
Personas:11 13%
Personas:12 19%
Personas:13 20%
Personas:14 22%
Personas:15 25%
Personas:16 27%
Personas:17 33%
Personas:18 33%
Personas:19 39%
Personas:20 40%
Personas:21 44%
Personas:22 49%
Personas:23 50%
Personas:24 55%
Personas:25 55%
Personas:26 60%
Personas:27 61%
Personas:28 64%
Personas:29 67%
Personas:30 70%

Por lo que en conclusión, el experto estaba en lo cierto. Nunca te acostarás sin saber algo más.



2 comentarios:

  1. Yo también he visto ese video y el caso es que juraría haber oído lo de los cumpleaños hace ya mucho tiempo.

    Es verdad que choca porque piensas "de 365, para que haya un 50% de posibilidades deberá haber 182'5 personas", pero a la vista de tu experimento está claro que no es así.

    Anda, que si el experimento hubiese devuelto otra cosa ... le íbamos a dar pal pelo al experto :)

    ResponderEliminar
  2. Muy buenas:
    He repasado tu algoritmo y los resultados que he obtenido son (se puede leer de varias maneras):

    - tomando 23 personas de cada una de 1000 poblaciones de estudio, en la mitad de las poblaciones hay dos personas que coinciden sus cumpleaños.(Estudiando 10000 poblaciones, encontramos que en la mitad de ellas con 7 personas encontramos 2 que coincidan sus cumpleaños)

    -si lo anterior es cierto, quería saber si el programa es un modelo aplicable para confirmar lo de que en 23 personas hay un 50% de posibilidades de que en dos de ellos coincidan su cumpleaños.

    Saludos.

    ResponderEliminar