简单的行,列和公式(和图表)的功能示例。
过去,一旦我听到一个特定的问题,我总是会运行到命令行,制作一个文件并开始编码。 这种冲动使我的生活变得更加复杂,因为每个应用程序都变得僵硬,难以更改,并且维护每个应用程序确实是脖子上的痛苦。 因此,我已经开始使用简单的列,行和公式来构建简单的应用程序,这些应用程序只需要完成工作即可(并且随时可以更改)。 为了展示Google表格的功能,我将使用蒙特卡洛方法估算pi。
蒙特卡洛方法是一种通过随机采样估算pi的方法。 有人将飞镖投掷到一个带有圆圈的正方形的情况下,该方法可以形象化。 使用落在圆内的飞镖数量,我们可以估计pi。 随着更多的试验,准确性提高。
如果我们假设飞镖投掷是随机的,那么降落在一个圆内的概率就是圆的面积除以正方形的面积。 正方形的面积为4r²-(2 * r)²-,圆的面积为pi *r²,因此我们可以从两个公式中得出pi / 4的比率。 该比例表明,在圆内获得点的概率除以在整个正方形内获得点的概率为pi / 4。 一旦有了比率,我们可以将其乘以4得到pi。
为了简单起见,这将在正方形的四分之一或仅第一个象限上进行,由于形状的对称性,比例将保持不变。
现在,让我们开始吧。
为了绘制随机点,我们可以创建一个表,该表包含名为X和Y的列,并且该列中的每个值设置为:
= RAND()
使用随机函数,我们将值的范围限制为0到1,这将允许我们将所有点放置在第一象限中。
完成此操作后,添加另一个名为Trial Num的列并将其设置为:
= ROW()-1
一旦我们进行数据透视,我们稍后将需要试验编号,因为它将用作计数试验时点的唯一标识符。
一旦我们将公式复制到底部,工作表将如下所示。


有了足够的行,我们可以使用图表功能创建散点图,以可视化这些点的外观。 这是散点图上的10,000点。


此时,我们可以使用“ 仅值”选项复制并粘贴整个表格,以限制Google表格生成更多随机值。 在工作表上进行任何更改后,RAND()将继续产生新的随机值。 由于工作表现在更容易使用,我们现在可以估计pi。
现在已经绘制了所有点,我们将首先确定该点是否落在圆内。 为此,我们可以使用勾股定律来获得距原点的距离,如果点的距离大于1(我们的半径),则该点不在圆内。 可以使用以下公式在X和Y值的右侧添加另一列来完成此操作:
= 1> SQRT(B2 ^ 2 + C2 ^ 2)
该公式解析为TRUE或FALSE值,使我们的表看起来像这样:


我们可以通过使用过滤器功能显示仅在圆内的点来测试公式是否正确,从而生成散点图,看起来像圆。


下一步是使用数据透视表汇总数据,在数据透视表中,我们将根据该点是否在圆中对行进行分组,并设置符合条件的试验次数。 由于试用编号是唯一的,因此我们将使用“试用”列上的COUNT函数来查找金额。 这是我的10,000分的汇总数据透视表。


最后,回到初始比率,当我们将圆上的点数除以总点数并乘以4时,我们应该能够得到接近pi的值。 为此,我们将使用以下公式:
= 4 * ( B3 /(B3 + B2) )


对于该值,我们得到了3.1472(对于几千个样本来说还不错)
借助一些公式以及行和列的帮助,我们能够估计最多3位的pi,我个人认为这是电子表格无法实现的。 对于未来,我肯定会在解决有限和/或相对简单的问题之前,对打开命令行进行三思。