Homework: Monte Carlo Estimation
In preparation for the lab, carefully review the code below and answer these questions.
- What does this program do?
- What is the program output if the user enters 10000 when prompted for the number of points?
- How would your answer to the above question change if the test in
line 15 used
<=rather than<? - Print the homework or copy and paste the code below in your homework. Draw a box around each statement, and underline each expression, in the code. (Even though technically an assignment in Java is an expression, do not underline entire assignments.)
The Random component provides a pseudo-random number generator that
generates numbers uniformly distributed in the `[0.0,1.0)` interval; the
method call rnd.nextDouble() returns a pseudo-random number in the
`[0.0,1.0)` interval. (In case you're not familiar with the notation
here, `[0.0,1.0)` denotes an interval consisting of all real numbers
between 0.0 inclusive and 1.0 exclusive, i.e., the set of all values `x`
satisfying `0.0 ≤ x < 1.0`.)
public static void main(String[] args) {
SimpleReader input = new SimpleReader1L();
SimpleWriter output = new SimpleWriter1L();
output.print("Number of points: ");
int n = input.nextInteger();
int ptsInInterval = 0, ptsInSubinterval = 0;
Random rnd = new Random1L();
while (ptsInInterval < n) {
double x = rnd.nextDouble();
ptsInInterval++;
if (x < 0.5) {
ptsInSubinterval++;
}
}
double estimate = (100.0 * ptsInSubinterval) / ptsInInterval;
output.println("Estimate of percentage: " + estimate + "%");
input.close();
output.close();
}