Skip to content

Instantly share code, notes, and snippets.

@xiaolai
Forked from shitsyndrome/mc-pi.rb
Created October 19, 2017 01:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save xiaolai/2e0624385fad56be3dcf4da057ffd5ee to your computer and use it in GitHub Desktop.
Save xiaolai/2e0624385fad56be3dcf4da057ffd5ee to your computer and use it in GitHub Desktop.
compute pi by Monte-Carlo method.
=begin
Find pi by the Monte-Carlo method.
area of a circle = pi r^2
area of a square = (2r)^2 = 4 r^2
Perform random uniform sampling between -1 and 1.
The proportion of points in the unit circle is:
p = (pi r^2) / (4r^2)
So pi = 4.0 * p
=end
N = 1000000
n_circle = 0
n_total = 0
N.times do
x = rand * 2 - 1
y = rand * 2 - 1
# equation of the unit circle
if x ** 2 + y ** 2 < 1
n_circle += 1
end
n_total += 1
end
puts "pi = #{4.0 * n_circle / n_total}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment