gpt4 book ai didi

javascript - 如何调试这个加权随机名称选择器代码

转载 作者:行者123 更新时间:2023-11-30 19:27:19 36 4
gpt4 key购买 nike

下面的代码将根据定义的权重选择一个随机名称。

代码如下:

var rand = function(min, max) {
return Math.random() * (max - min) + min;
};

var getRandomItem = function(list, weight) {
var total_weight = weight.reduce(function (prev, cur, i, arr) {
return prev + cur;
});

var random_num = rand(0, total_weight);
var weight_sum = 0;
console.log(random_num)

for (var i = 0; i < list.length; i++) {
weight_sum += weight[i];
weight_sum = +weight_sum.toFixed(2);

if (random_num <= weight_sum) {
return list[i];
}
}

// end of function
};


var list = [];
var data = [];

data[0] = { Name: "Jack", accuracy: 52, accent: 79, weight: 1 };
data[1] = { Name: "Sara", accuracy: 92, accent: 24, weight: 2 };
data[2] = { Name: "Nick", accuracy: 82, accent: 89, weight: 1 };
data[3] = { Name: "Doe", accuracy: 22, accent: 88, weight: 4 };
data[4] = { Name: "Lee", accuracy: 58, accent: 63, weight: 9 };
data[5] = { Name: "Sasha", accuracy: 69, accent: 42, weight: 5 };

for ( var i=0; i < data.length; i++ ) {
list.push( data[i] );

}

console.log(list);

setInterval(function(){

for ( var i=0; i < data.length; i++ ) {
var random_item = getRandomItem(list[i].Name, list[i].weight);
console.log(random_item);

}

}, 500);

不幸的是,由于错误,代码无法运行:

Uncaught TypeError: weight.reduce is not a function at getRandomItem

我不明白为什么会这样。

注意:这会起作用...

var list = ['javascript', 'php', 'ruby', 'python'];
var weight = [1, 1, 1, 9];
var random_item = getRandomItem(list, weight);
console.log(random_item);

最佳答案

正如其他人指出的那样,列表和权重参数必须是数组。所以我在下面的代码中构建了两个数组。

var rand = function(min, max) {
return Math.random() * (max - min) + min;
};

var getRandomItem = function(list, weight) {
var total_weight = weight.reduce(function (prev, cur, i, arr) {
return prev + cur;
});

var random_num = rand(0, total_weight);
var weight_sum = 0;
console.log(random_num)

for (var i = 0; i < list.length; i++) {
weight_sum += weight[i];
weight_sum = +weight_sum.toFixed(2);

if (random_num <= weight_sum) {
return list[i];
}
}

// end of function
};


var list = [];
var weight = [];
var data = [];

data[0] = { Name: "Jack", accuracy: 52, accent: 79, weight: 1 };
data[1] = { Name: "Sara", accuracy: 92, accent: 24, weight: 2 };
data[2] = { Name: "Nick", accuracy: 82, accent: 89, weight: 1 };
data[3] = { Name: "Doe", accuracy: 22, accent: 88, weight: 4 };
data[4] = { Name: "Lee", accuracy: 58, accent: 63, weight: 9 };
data[5] = { Name: "Sasha", accuracy: 69, accent: 42, weight: 5 };

for ( var i=0; i < data.length; i++ ) {
list.push( data[i].Name );
weight.push( data[i].weight );
}

console.log(list);
console.log(weight);

setInterval(function(){

for ( var i=0; i < data.length; ++i ) {
var random_item = getRandomItem(list, weight);
console.log(random_item);
}

}, 500);

关于javascript - 如何调试这个加权随机名称选择器代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56768919/

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