根据加权概率选择变量
Choose variable based on weighted probability
我有一个变量列表及其加权概率,如下所示:
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
在 google 工作表中,我使用以下函数 select 基于累积概率的变量
=INDEX('WeatherChoices'!A2:A7,COUNTIF('WeatherChoices'!D2:D7,"<="&RAND())+1)
其中 A2:A7 是天气类型列表,D2:D7 是累积概率。
我现在正尝试将其复制为 google 脚本函数,但无法找出嵌套 IF 语句的替代方法。 IE。生成一个随机数,如果在两个累积值之间选择变量。
是否有更优雅的一步完成此操作的方法?
我查看了文档,但除了 .random()
函数之外找不到任何其他内容。
试试这个:
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 脚本中使用开关。您需要为每个案例设置不同的概率,类似于 if
语句,但这看起来更有条理。如果您有任何疑问,this link will give you the basics, and this one 将向您展示如何设置更复杂的案例。
我有一个变量列表及其加权概率,如下所示:
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
在 google 工作表中,我使用以下函数 select 基于累积概率的变量
=INDEX('WeatherChoices'!A2:A7,COUNTIF('WeatherChoices'!D2:D7,"<="&RAND())+1)
其中 A2:A7 是天气类型列表,D2:D7 是累积概率。
我现在正尝试将其复制为 google 脚本函数,但无法找出嵌套 IF 语句的替代方法。 IE。生成一个随机数,如果在两个累积值之间选择变量。
是否有更优雅的一步完成此操作的方法?
我查看了文档,但除了 .random()
函数之外找不到任何其他内容。
试试这个:
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 脚本中使用开关。您需要为每个案例设置不同的概率,类似于 if
语句,但这看起来更有条理。如果您有任何疑问,this link will give you the basics, and this one 将向您展示如何设置更复杂的案例。