random - 根据加权概率选择变量
问题描述
我有一个变量列表及其加权概率,如下所示:
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()
我浏览了文档,但除了函数之外找不到任何东西。
解决方案
试试这个:
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
语句,但这看起来更有条理。如果您有任何疑问,此链接将为您提供基础知识,此链接将向您展示如何设置更复杂的案例。
推荐阅读
- xaml - 如何使用 C++/WinRT 实现 XAML 和 DirectX 交换链之间的互操作
- python - 从 pandas Dataframe 中的混合 dtype 列中删除破折号字符串
- sql - 枢轴没有给出预期的结果
- protractor - 定位器是否应该等待,这是否会导致不稳定的测试?
- apache-spark - Apache Spark:为什么 spark 创建多个阶段来扫描甚至缓存的配置单元表,为什么重新分区可以解决这个问题?
- node.js - 在 Node.js 中拥有一个适用于应用程序生命周期的变量的最佳实践是什么?
- css - SVG 元素 CSS 过渡
在 Chrome 上标记 - javascript - 如何用里面的图像和文字编码进度圈?
- node.js - 未在 VPC 中调用 AWS Cognito 函数的问题
- amazon-cloudwatch - 我怎样才能通过电子邮件在 codepipeline 中发送失败的代码片段?