|
2 | 2 | import random
|
3 | 3 |
|
4 | 4 |
|
5 |
| -def in_circle(x, y): |
| 5 | +def in_circle(x, y, radius = 1): |
6 | 6 | """Return True if the point is in the circle and False otherwise."""
|
7 |
| - radius = 1.0 |
8 | 7 | return (x*x + y*y) < radius*radius
|
9 | 8 |
|
10 |
| -def monte_carlo(n_samples): |
| 9 | +def monte_carlo(n_samples, radius = 1): |
11 | 10 | """Return the estimate of pi using the monte carlo algorithm."""
|
12 | 11 | in_circle_count = 0
|
13 | 12 | for i in range(n_samples):
|
14 | 13 |
|
15 | 14 | # Sample x, y from the uniform distribution
|
16 |
| - x = random.uniform(0,1) |
17 |
| - y = random.uniform(0,1) |
| 15 | + x = random.uniform(0, radius) |
| 16 | + y = random.uniform(0, radius) |
18 | 17 |
|
19 | 18 | # Count the number of points inside the circle
|
20 | 19 | if(in_circle(x, y, radius)):
|
21 | 20 | in_circle_count += 1
|
22 | 21 |
|
23 |
| - # Since we've generated points in upper left quadrant ([0,1], [0,1]) |
| 22 | + # Since we've generated points in upper left quadrant ([0,radius], [0, radius]) |
24 | 23 | # We need to multiply the number of points by 4
|
25 |
| - pi_estimate = 4 * in_circle_count / (n_samples * radius * radius) |
| 24 | + pi_estimate = 4 * in_circle_count / (n_samples) |
26 | 25 |
|
27 | 26 | return pi_estimate
|
28 | 27 |
|
|
0 commit comments