gpt4 book ai didi

javascript - 根据对象属性的值随机选择对象属性(抽奖)?

转载 作者:行者123 更新时间:2023-12-03 05:11:52 27 4
gpt4 key购买 nike

我有一个像这样的对象:

{
"user1": 200,
"user2": 50,
"user3": 250,
"user4": 100
}

我想根据与他们的属性(property)相关的值(value)随机选择这些用户之一。因此,在这种情况下,user1 应该有 33.33% 的获胜机会,user2 应该有 8.33% 的获胜机会,依此类推。我怎样才能做到这一点?

最佳答案

您只需选择 0 到 N 之间的一个数字,其中 N 是所有权重的总和,然后找到该权重所在的位置:

function selectByWeight(list) {
var total = 0;

Object.keys(list).forEach(function(k) {
total += list[k];
});

var selection = Math.random() * total;
var selected;
var count = 0;

Object.keys(list).forEach(function(k) {
count += list[k];

if (count > selection && !selected) {
selected = k;
}
});

return selected;
}

var users = {
"user1": 200,
"user2": 50,
"user3": 250,
"user4": 100
}

console.log(selectByWeight(users));

关于javascript - 根据对象属性的值随机选择对象属性(抽奖)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775273/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com