javascript - 如何从具有特定比例的数组中选择一个随机值?
问题描述
我正在使用 Javascript,我想从数组中选择一个随机值。问题是实际上我想以特定比例进行选择。
这是什么意思?
我有以下价值观 -'INFO', 'CRITICAL', 'DEBUG', 'ERROR'
我想选择具有以下比率的值:
1. INFO - 30%
2. CRITICAL - 5%
3. DEBUG - 55%
4. ERROR - 10%
这就是我目前随机选择一个值的方式 -
var diffSev = ['INFO', 'CRITICAL', 'DEBUG', 'ERROR']
output['testSev'] = diffSev[Math.floor(Math.random() * diffSev.length)];
我想添加一个逻辑来选择具有我需要的比率的值。谢谢!!
解决方案
您可以拥有一个大小为 20 的数组,其中包含标签的相对部分,并表示每个标签的确切百分比。
然后,您需要做的只是 1-20 的随机数,结果将用作从数组中选择的索引。
var diffSev = [
'CRITICAL',
'ERROR', 'ERROR',
'INFO', 'INFO', 'INFO', 'INFO', 'INFO', 'INFO',
'DEBUG', 'DEBUG', 'DEBUG', 'DEBUG', 'DEBUG', 'DEBUG', 'DEBUG', 'DEBUG', 'DEBUG', 'DEBUG', 'DEBUG'
]
return diffSev[Math.floor(Math.random() * 20)];
推荐阅读
- apache-spark - 如何使用 Spark 加密数据?
- java - StackEmptyException 异常问题
- amazon-web-services - 在 AWS EC2 Windows 实例上使用哪个构建服务器和代码扫描工具?
- c# - WriteableBitmap 复制内存泄漏
- php - URL 重写,虚拟子域
- r - 在 r 中打印一个三角形
- python - Tensorflow 中的冻结图
- zxing.net - ZXing.BarcodeReader 代码不解码条码
- mysql - 使用 join Mysql 获取结果
- java - Idea 不断将 Kotlin 的编译目标从 1.8 切换到 1.6