javascript - 如何根据其值随机返回关联数组名称

标签 javascript random probability

我有一组与多个“点”相对应的广告系列。看起来像这样:

[ {"c1":4, "c2":8, "c3":25} ]

我想从这个集合中随机选择一个广告系列。我假设 rand() 会在某个时候发挥作用。但是,我希望每个的值(value)都会影响其被选中的机会。

例如,广告系列“c2”的选择频率应该是广告系列“c1”的两倍(大约)。 “c3”将成为王,最有可能被选中。

每次脚本运行时,营销事件的数量和相应的值可能相同,也可能不同。

有什么好的方法可以解决这个问题吗?

最佳答案

这很容易。 只需为每个事件创建另一个具有 CDF 值的 map 即可。对于您的示例,它将是:

0.108: C1
0.324: C2
1: C3

然后获取 0 到 1 之间的随机数。遍历映射并找到大于随机数的最小数字(您可以对它进行二分搜索或创建一个排序 HashMap ,也可以给出最小的较大数字)

请注意,通过添加概率,最后一个条目可能不会添加到 1(可以是 0.999)。只需手动将其设置为 1 即可。

关于javascript - 如何根据其值随机返回关联数组名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11533673/

相关文章:

python - python scipy/numpy 中的多项式 pmf

sql-server-2005 - 预测某个时间点的游戏结果

python - 总结在 R 或 Python 中赢得最后 N 场比赛中的 X 场的所有方法

javascript - 努力应对 D3 一般更新模式和组

random - 网络标志 : How to make sure a variable stays in a defined range?

java - 为什么随机不起作用?

sql - 使用 RND() 的数据类型不匹配

javascript - 客户端 JavaScript,创建多个元素并尽快显示每个元素

javascript - 使用 Set 从数组中删除重复项,保留最高的 id

javascript - lit-html 的动态标签不可能?