Google Spreadsheets重复功能第N次&总和结果

时间:2018-04-07 15:54:55

标签: google-sheets

我有以下功能

=IF(RAND()<0.25,1,0)

RAND()以十进制格式返回介于0到1之间的任何值,并且想法是一个项目有25%的几率获得1.如果它小于0.25,则rand()然后是一个命中并得到一个1,否则为0.现在让我说我需要这样做100次并将所有'1'的总和加起来,在这种情况下,平均为25%左右。 如何在Google电子表格中执行此操作?

基本上寻找一种方法来重复一个函数n次并总结结果。

我到处寻找(youtube,谷歌论坛)并且没有找到任何解决方案。

2 个答案:

答案 0 :(得分:2)

我也可以把它作为一个答案,因为它试图解决一个更广泛的问题,即你是否可以重复一次(比如说)100次。答案是,是的,如果该函数与数组公式兼容。兰德不能以这种方式使用,因为它没有采取任何论据(由于某些原因,也没有其他功能,如countifs)。但是你可以通过使用Rand之二来代替并为它提供100个数组元素。这些乘以零因此实际上不会影响答案,但Google表格仍会对该函数进行100次评估:

ArrayFormula(sum(if(randbetween(0,A1:A100*0+99)<25,1,0)))

=Sumproduct(if(randbetween(0,A1:A100*0+99)<25,1,0))

结果是每次强制重新计算时(通过更改A1:A100范围内的内容或设置文件 - &gt;电子表格设置 - &gt;(标签)计算 - &gt;重新计算到每分钟)它会在25左右给出答案。

为了使其更具弹性(允许A1:A100中的任何值包括错误值)可以尝试

=ArrayFormula(sum(if(randbetween(0,iferror(A1:A100/0,0)+99)<25,1,0)))

=Sumproduct(if(randbetween(0,iferror(A1:A100/0,0)+99)<25,1,0))

我不知道为什么我一开始就没有这样做

=ArrayFormula(sum(if(randbetween(0,row(A1:A100)*0+99)<25,1,0)))

然后这很容易允许变量范围

=ArrayFormula(sum(if(randbetween(0,row(indirect("A1:A"&H1))*0+99)<25,1,0)))

其中H1中的数字不必限制在工作表中的行数。

答案 1 :(得分:0)

好的,所以我找到了一个非常复杂的答案。如果有人发现更好,请告诉我。

第一件事是用户|&#39; - &#39; |评论是在单独的工作表上创建一个范围。

因为我知道我不会同时查找超过200个值,所以我创建的范围是该公式的200长。

=IF(RAND()<0.25,1,0)

这将创建随机值的初始列表。

下一步是您需要生成随机化器种子。这基本上是您创建的范围之间的随机数。您可以使用

执行此操作
=RANDBETWEEN(1,200)

这应该与您稍后要总结的内容位于同一列。

接下来,您要创建一个动态字符串,稍后可以通过arrayFormula访问该字符串。

="Randomizer!B"&B12&":B"&B12+B3

在我的情况下,我在名为randomizer的工作表上有200个随机数字。请注意&amp;,这是连接字符串的方式。在我的例子中,B12是=RANDBETWEEN(1,200)的引用,B3是我想要随机发生的次数。它可以是任何值,只要它比随机化器种子小你希望它是随机的次数。

最后使用=SUM(ARRAYFORMULA(INDIRECT(B13)))引用此字符串, indirect允许您将字符串称为单元格,这就是我能够创建动态范围来计算的方法。< / p>

我会说这种方法的优点是计算速度超快,因为已经预先计算了随机数。

这个想法是,它将继续从您创建的预先计算的随机数中创建随机范围,然后对这些范围求和,基本上计算n次的随机数。

希望这有助于某人。