0

快速提问,我使用的是谷歌电子表格,我把它放在一个单元格中。

=如果(RANDBETWEEN(1,40)=1,1,0)

上面是我用来生成 1 到 40 之间的随机数的代码。如果它恰好落在“1”上,那么它将“1”返回到单元格,否则返回 0。我想要这个循环但是循环让我们说“20”次。

因此,在 20 次尝试中,“1”可能会出现“3”次。我正在寻找能够总计输出“1”并输出值的随机事件数量的代码。

因此,如果它发生“3”次,它将输出 3。如果在循环期间随机“1”被触发“5”次,它将返回 5,依此类推。

如何在 Google 电子表格中执行此操作?

4

2 回答 2

1

好吧,我找不到通过普通命令的方法,但是如果您进入脚本编辑器并添加以下内容:

function calcRandomTotal(iterations,percentChance){
  var maxNumber = 1/percentChance;
  var hits = 0;
  var randNum = 0;

  for(i=0;i<iterations;i++){
    randNum = randomFromInterval(1,maxNumber);
    if(randNum == 1){
      hits++; 
      randNum = 0;//reset it
    }
  }

  return hits;
};

function randomFromInterval(from,to)
{
    return Math.floor(Math.random()*(to-from+1)+from);
}

然后简单地说 = calcRandomTotal(iterations,percentChance) 或 calcRandomTotal(20,0.025) (因为 0.025 是 2.5% 或 1/40 的机会。这将对一组迭代次数运行随机模拟并返回总结果。

于 2013-10-06T02:02:09.053 回答
0

我找到了另一个没有任何代码的解决方案!

=IFERROR(ArrayFormula(sum(randbetween(0,10)+(row(indirect("A1:A"&(D$125)))*0))),0)

这个想法是使用数组公式并欺骗它认为有很多单元格使用了间接函数,在我的例子中,D$125 指的是一个单元格,你想要迭代 randbetween 多少次。

享受!

于 2020-10-15T06:37:11.847 回答