How many random people do you have to select before you find a duplicate birthday (that is, two peole who were born on the same day of the same month, but not necessarily in the same year).
This program simulates the process. (It ignores the possibility of people born on leap day.)

/*******************************************************
*     MYCPLUS Sample Code - https://www.mycplus.com     *
*                                                     *
*   This code is made available as a service to our   *
*      visitors and is provided strictly for the      *
*               purpose of illustration.              *
*                                                     *
* Please direct all inquiries to saqib at mycplus.com *
*******************************************************/



public class BirthdayProblemDemo {

   public static void main(String[] args) {

       TextIO.putln("This program simulates taking people at random");
       TextIO.putln("until two have been found who were born on the");
       TextIO.putln("same day of the year.\n");

       do {
          birthdayProblem();
          TextIO.put("\nAgain? ");
       } while ( TextIO.getlnBoolean() );

       TextIO.putln("\n\nOK.  Goodbye.");

   } // end main()


   static void birthdayProblem() {
          // Simulate choosing people at random and checking the
          // day of the year they were born on.  If the birthday
          // is the same as one that was seen previously, stop,
          // and output the number of people who were checked.

      boolean[] used;  // For recording the possible birthdays
                       //   that have been seen so far.  A value
                       //   of true in used[i] means that a person
                       //   whose birthday is the i-th day of the
                       //   year has been found.

      int count;       // The number of people who have been checked.

      used = new boolean[365];  // Initally, all entries are false.

      count = 0;

      while (true) {
             // Select a birthday at random, from 0 to 364.
             // If the birthday has already been used, quit.
             // Otherwise, record the birthday as used.
         int birthday;  // The selected birthday.
         birthday = (int)(Math.random()*365);
         count++;
         if ( used[birthday] )
            break;
         used[birthday] = true;
      }

      TextIO.putln("A duplicate birthday was found after "
                                                + count + " tries.");

   } // end birthdayProblem()


} // end class BirthdayProblemDemo