擅长:python、mysql、java
<p>第一个版本的算法应该更像这样:</p>
<pre><code>from __future__ import division, print_function
import sys
if sys.version_info.major < 3:
range = xrange
import random
incircle = 0
n = 100000
for n in range(n):
x = random.random()
y = random.random()
if (x*x + y*y <= 1):
incircle += 1
pi = (incircle / n) * 4
print(pi)
</code></pre>
<p>印刷品:</p>
^{pr2}$
<p>这更近了。增加<code>n</code>以更接近pi。在</p>
<p><a href="http://polymer.bu.edu/java/java/montepi/MontePi.html" rel="nofollow">algorithm</a>只考虑单位圆的四分之一,即半径为<code>1</code>。在</p>
<p>四分之一圆面积的公式为:</p>
<pre><code>area_c = (pi * r **2) / 4
</code></pre>
<p>对于包含此圆的正方形的面积:</p>
<pre><code>area_s = r **2
</code></pre>
<p>其中<code>r</code>是圆的半径。在</p>
<p>现在的比率是:</p>
<pre><code>area_c / area_s
</code></pre>
<p>代入上面的方程式,重新排列,得到:</p>
<pre><code>pi = 4 * (area_c / area_s)
</code></pre>
<p>在蒙特卡洛,用一个代表它们的非常高的数字来代替这两个区域。通常,这里使用随机投掷飞镖的类比。在</p>