首页 > 解决方案 > 根据加权概率选择变量

问题描述

我有一个变量列表及其加权概率,如下所示:

Cloudy: 0.25
Sunny and warm: 0.25
Dry and cold: 0.125
Wet and cold: 0.25
Wet and warm: 0.375
Stormy/rainy: 0

在谷歌表格中,我使用以下函数根据它们的累积概率选择一个变量

=INDEX('WeatherChoices'!A2:A7,COUNTIF('WeatherChoices'!D2:D7,"<="&RAND())+1)

其中 A2:A7 是天气类型列表,D2:D7 是累积概率。

我现在正试图将其复制为谷歌脚本函数,但无法找到嵌套 IF 语句的替代方法。即生成一个随机数,如果在两个累积值之间选择变量。

有没有更优雅的方式一步一步做到这一点?

.random()我浏览了文档,但除了函数之外找不到任何东西。

标签: randomgoogle-apps-scriptprobability

解决方案


试试这个:

function test(){
  var number= 0;
  for (var i = 0; i < 100; i++){
    number = Math.random().toFixed(3);
    switch(true){
      case number > 0 && number < 0.375:
        Logger.log("wet");
        break;
      case number > 0.376:
        Logger.log("something else");
        break;
    }
  }
}

这是您需要的一个非常简单的版本,但它向您展示了如何在 App Script 中使用开关。您将需要为您拥有的不同概率设置每种情况,类似于 withif语句,但这看起来更有条理。如果您有任何疑问,此链接将为您提供基础知识,链接将向您展示如何设置更复杂的案例。


推荐阅读