Lab 5
Start Now
## Overview In this assignment, you will create a program that will estimate the value of $ \pi $. ## Assignment First, consider the figure below: <figure>[<img src="lab5a.png" />](lab5a.png)</figure> The figure represents one quarter of a unit circle (a circle with a radius of 1). The area under the curve is equal to $ \pi / 4 $ since the area of a unit circle is $ \pi \times r^2 = \pi \times 1^2 = \pi $. Now, if we were to randomly plot a point in the square above, the probability that it would be under the curve is equal to the ratio of the area under the curve to the area of the square. The area of the square is $ 1 \times 1 = 1 $, and the area under the curve is $ \pi / 4 $ since it is a quarter of the unit circle. The figure below shows a number of randomly generated points plotted in the unit square: <figure>[<img src="lab5b.png" />](lab5b.png)</figure> By taking the ratio of all of the dots that landed under the curve to the total number of dots plotted, we can estimate the value of $ \pi $. There are 4000 random points in the above figure. 3143 of them lie under the curve, so we estimate $ \pi $ to be 3.143. Write a program that * Asks the user to enter the number of randomly generated points to be used to estimate $ \pi $. * Generates the coordinates for the desired number of points using the [Random](https://docs.oracle.com/javase/8/docs/api/java/util/Random.html) class. * Performs the calculations to determine whether each point is inside or outside of the circle and keeps track of these counts. * Calculates an estimate for $ \pi $ based on the generated points. * Determines the number of correct digits in the estimate. * Displays the estimated value and the number of correct digits. * Asks the user if they would like to generate a new estimate for $ \pi $. * If the user enters anything other than <kbd>y</kbd>, <kbd>Y</kbd>, <kbd>n</kbd>, or <kbd>N</kbd>, the prompt should be repeated. * If the user enters <kbd>y</kbd> or <kbd>Y</kbd>, all of the steps above are repeated. * If the user enters <kbd>n</kbd> or <kbd>N</kbd>, the program should display the best estimate of $ \pi $ generated while the program ran and then exit. ## Requirements * The program must be created in a class named `PiEstimate` that is in a package named the same as your MSOE username. * As long as the user enters an integer for the number of points used to generate the estimate, the program must not crash. If the user enters an invalid integer value, the program should report the error professionally and reprint the prompt again. * The program must not crash regardless of what the user enters in response to the prompt asking if they would like to generate a new estimate. ## Just for Fun Once you have met the requirements for the assignment, you may wish to add the following enhancements: * Generate a grid of equally spaced points instead of randomly located points and compare estimates of $ \pi $ * Generate 20 estimates and produce the following: + Largest estimate + Smallest estimate + Closest estimate + Average estimate + Median estimate + Standard deviation of estimates ## Acknowledgement This laboratory assignment was developed by Dr. Chris Taylor <div class="notetip"> See your professor's instructions for details on submission guidelines and due dates. </div>

Wednesday, 09-Oct-2019 01:26:26 CDT