Skip to content

Instantly share code, notes, and snippets.

@louismullie
Created September 23, 2012 07:31
Show Gist options
  • Save louismullie/3769218 to your computer and use it in GitHub Desktop.
Save louismullie/3769218 to your computer and use it in GitHub Desktop.
Monte Carlo Estimation of PI in Python
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)
@mfriar2
Copy link

mfriar2 commented Apr 1, 2021

Thank you! This helped me understand how to run it with x and y.

@srdinsek
Copy link

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