CouponCollector.java


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


/******************************************************************************
 * Compilation: javac CouponCollector.java
 * Execution: java CouponCollector n
 *
 * Given n distinct card types, how many random cards do you need
 * do collect before you have (at least) one of each type?
 * This program simulates this random process.
 *
 *
 * % java CouponCollector 1000
 * 6583
 *
 * % java CouponCollector 1000
 * 6477
 *
 * % java CouponCollector 1000000
 * 12782673
 *
 ******************************************************************************/
publicclassCouponCollector{
publicstaticvoidmain(String[] args){
int n = Integer.parseInt(args[0]);// number of card types
boolean[] isCollected =newboolean[n];// isCollected[i] = true if card i has been collected
int count =0;// total number of cards collected
int distinct =0;// number of distinct cards
// repeatedly choose a random card and check whether it's a new one
while(distinct < n){
int value =(int)(Math.random()* n);// random card between 0 and n-1
 count++;// we collected one more card
if(!isCollected[value]){
 distinct++;
 isCollected[value]=true;
}
}
// print the total number of cards collected
 System.out.println(count);
}
}

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


Copyright © 2000–2022, Robert Sedgewick and Kevin Wayne.
Last updated: Thu Aug 11 10:13:44 EDT 2022.