Birthday.java


Below is the syntax highlighted version of Birthday.java from §1.4 Arrays.


/******************************************************************************
 * Compilation: javac Birthday.java
 * Execution: java Birthday days
 *
 * Computes the number of people (by simulation) that must enter a room
 * until two of them share a birthday. Assumes birthdays are uniform
 * and independent from 0 to days-1.
 *
 * When n = 365, the expected number is 24.61659. This is slightly more
 * than 23, which is the minimum number of people required for there to
 * be a >= 50% chance of two (or more) having the same birthday.
 *
 * % java Birthday 365
 * 25
 *
 * % java Birthday 365
 * 22
 *
 ******************************************************************************/
publicclassBirthday{
publicstaticvoidmain(String[] args){
int days = Integer.parseInt(args[0]);// number of days
int people =0;// total number of people
// hasBirthday[d] = true if someone born on day d; false otherwise
// auto-initialized to false
boolean[] hasBirthday =newboolean[days];
while(true){
 people++;
int d =(int)(days * Math.random());// integer between 0 and days-1
if(hasBirthday[d])break;// two people with the same birthday, so break out of loop
 hasBirthday[d]=true;// update array
}
 System.out.println(people);
}
}

AltStyle によって変換されたページ (->オリジナル) /


Copyright © 2000–2022, Robert Sedgewick and Kevin Wayne.
Last updated: Thu Sep 12 09:26:57 AM EDT 2024.