/*******************************************************************
* Name:
* Login:
* Precept:
*
* Description: Reads in an array of N frequency counts from the
* command line and prints out i with probability proportional to
* the ith frequency count.
*
* Dependencies: None.
*
* Examples:
* % java DiscreteDistribution 1 1 1 1 1 1 // six equally likely events
* 3
* % java DiscreteDistribution 1 1 1 1 1 1
* 0
* % java DiscreteDistribution 1 1 1 1 1 3 // six events, one 3x more
* 5 // likely than the others
* % java DiscreteDistribution 1 1 1 1 1 3
* 2
* % java DiscreteDistribution 1 1 1 1 1 3
* 5 Booksite Web Exercise 1.4.2
*************************************************************************/
public class DiscreteDistribution {
public static void main(String[] args) {
// read in N frequencies. store in integer array.
int N = __________________________;
____________[] freq = __________ int[___];
for (_____________________; __________________; __________) {
freq[_____] = Integer.parseInt(__________________);
}
// compute total count of all frequencies
int total = ______;
for (int i = 0; i < N; i++) {
total += __________________________________;
}
// generate random integer with probability proportional to frequency
int r = (int) (total * Math.random()); // integer in [0, total)
int sum = 0;
int event = -1;
for (int i = 0; i < N && sum <= r; i++) {
sum += freq[i];
event = i;
}
System.out.println(event);
}
}