首页 > 解决方案 > 如何从具有特定比例的数组中选择一个随机值?

问题描述

我正在使用 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)];

我想添加一个逻辑来选择具有我需要的比率的值。谢谢!!

标签: javascriptarraysrandom

解决方案


您可以拥有一个大小为 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)];

推荐阅读