擅长:python、mysql、java
<p>这个问题的有趣之处在于,这个实现同样可以工作,并且无论您使用<code>random.random()</code>还是{<cd2>},都会给出相同的预期答案。。。所以作者选择使用<code>random.random()*2-1</code>的原因与程序的功能无关。在</p>
<p>此代码的作者对算法的理解如下:</p>
<ul>
<li>想象一个刻在正方形上的圆圈。使用单位圆是因为它最简单</li>
<li>选择正方形内的随机点,看看有多少点也在圆内</li>
<li>圆的面积为pi,正方形的面积为4,因此落在圆内的点的比例将接近pi/4。计算测得的比值并求解pi。在</li>
</ul>
<p>现在,刻有单位圆的正方形从(-1,-1)到(1,1)。由于<code>random()</code>只给你[0,1]中的一个数字,所以它需要乘以2,然后移动以在[-1,1]中选择一个随机数,这个随机数选择正方形内的随机点。在</p>
<p>如果作者使用<code>random()</code>,那么他将只选择第一象限内的点。所有的象限看起来完全相同,所以命中与未命中的比率是相同的,程序仍然可以正常工作,但是程序将<em>而不是</em>执行上述过程,并且更难理解。在</p>
<p>好代码最重要的特性之一就是它能清楚地传达作者的意图。在</p>