The mentor advised me, "To learn a new language, try to find the pi using the Monte Carlo method!", So I decided to try it blindly.
However, I didn't understand the meaning of the Japanese word "calculating the circumference ratio by the Monte Carlo method" at all, and I started by understanding it (laughs).
-** Monte Carlo method : Observe and analyze using random numbers. Monte Carlo seems to be the name of the district where the Principality of Monaco is located in Monte Carlo. - Random number : A number that is randomly output with equal probability within a fixed range of numbers. - Finding the circumference ratio : What I understood is to find the area of the unit circle from the conclusion. - Unit circle **: A circle with a radius of 1
In summary, I understood that ** finding the circumference ratio by the Monte Carlo method ** means ** generating numbers randomly and analyzing them to find the area of a circle with a radius of 1.
I still don't understand the meaning (laughs)
So, here is a summary of the ideas of the smart people who were on the net.
(1) First, to find the area of a circle with a radius of 1, divide the circle into four parts.
(2) Then put it in a square with one side.
(3) Take the square as coordinates and imagine it as shown in the figure below.
(4) The bottom is a state with 1/4 yen. (Ignore the dots for a moment)
(5) Randomly make dots in the upper square (see the dots). In other words, we will randomly type an array of (x, y).
(6) Do this n times (many times).
(7) Count the points (colored in pink) inside the circle and use it as p.
(8) How to determine that a point is in a circle? Calculate the length of a random point (x, y)
from the start point (0, 0)
, and if this is 1 or less, judge it as inside a circle.
(9) The length from (0, 0)
to (x, y)
can be calculated as the hypotenuse of a right triangle. Do you remember the three-square theorem? (I forgot)
(10) After n times, divide p by n (p/n), which is an approximation of the area of a 1/4 circle.
(11) Multiply p/n by 4 to find the value of the circle.
As for the code, I wrote it like this. (Please also refer to the advice of @scivola and @ kojix2 in the comments section)
main.ruby
n = 1000000
count = 0
for i in 0 .. n
z = Math.sqrt((rand ** 2) + (rand ** 2))
if z < 1
count += 1
end
end
#Circumference
cir = count / n . to_f * 4 #to_The decimal point is not displayed unless it is set to float with f.
p cir
Math
is a built-in module that groups mathematical methods..
Specify the receiver message (in this case, the message issqrt ()
)Sqrt ()
is an abbreviation for square root. Similar to PHP.I was 36 years old and changed jobs as an IoT engineer. Since that position is Ruby main, I put the familiar PHP and started studying Ruby.
If you have any suggestions, please do not hesitate to contact us.
The note shows the experience of changing jobs ↓ 36-year-old inexperienced person has been appointed as an IoT engineer (1/3) Programming learning itinerary 36-year-old inexperienced person has been appointed as an IoT engineer (2/3) Job change hesitation
Recommended Posts