Created
September 23, 2012 07:31
-
-
Save louismullie/3769218 to your computer and use it in GitHub Desktop.
Monte Carlo Estimation of PI in Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import random as r | |
import math as m | |
# Number of darts that land inside. | |
inside = 0 | |
# Total number of darts to throw. | |
total = 1000 | |
# Iterate for the number of darts. | |
for i in range(0, total): | |
# Generate random x, y in [0, 1]. | |
x2 = r.random()**2 | |
y2 = r.random()**2 | |
# Increment if inside unit circle. | |
if m.sqrt(x2 + y2) < 1.0: | |
inside += 1 | |
# inside / total = pi / 4 | |
pi = (float(inside) / total) * 4 | |
# It works! | |
print(pi) |
Here is a slightly faster version.
def square_pi(N):
# square_pi(100000000) is fast and gives 4 digits.
xy = np.random.random((N, 2)) ** 2
counts = np.sum((xy[:, 0] + xy[:, 1]) <= 1)
print("pi was approximated at ::",4*counts/N)
return 4*counts/N
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thank you! This helped me understand how to run it with x and y.