【发布时间】:2019-06-30 16:51:17
【问题描述】:
这对我来说是一个挑战,我该如何正确编码?我真的需要一些帮助来处理它......
这是关于加权 - 实际上是随机化。我试着用我糟糕的英语一步一步地解释这个:) 很抱歉,如果这里提供了任何不必要的信息,如果有人能让这个更简单,我会很高兴......
假设我们要根据所需的权重随机选择一个城市名称。
这里我们有一个对象数组,其中包含这些城市名称和我们的样本所需权重以及每个城市到西部的距离。
var list = [
{ name: "New York", distance: 4, weight: 1 },
{ name: "Atlanta", distance: 3, weight: 1 },
{ name: "Dallas", distance: 2, weight: 1 },
{ name: "Los Angeles", distance: 1, weight: 1 },
];
所以纽约很远,洛杉矶很近。现在好了,我可以使用这个函数根据它的权重来选择一个城市(它背后的代码没有必要给你看,如果你想看的话,可以随时询问)。
var random_item = getRandomItem(name, weight);
console.log(random_item);
此代码的结果是这些城市之一,例如纽约。
我的问题是:在拿到第一个城市后,我想要一个新的修改权重数组,以便:
A) 将已经拾取的城市权重设为 0(这样就不能再重复了注意:这不是问题)。
B) 根据与最后选择的城市的距离,使用以下逻辑修改剩余城市的权重:城市离最后选择的城市越远,它们的权重就越大。 (换句话说,我想根据已经被选中的最后一个城市来挑选城市......)
例如:如果纽约是第一个选择的城市,那么纽约的权重应该为 0,并且与洛杉矶的距离为 3(New York.distance: 4 vs Los Angeles.distance: 1)添加Los Angles.weight a 3 and make it 4.
感谢任何想法或解决方案...
【问题讨论】:
-
你的逻辑不会如你所愿。将亚特兰大作为随机城市:亚特兰大权重变为:0,纽约权重变为:
(3 - 4) + 1 = 0- 根据您的逻辑,您有两个权重为零。我建议不要添加当前重量。这将提供一个带符号的值作为不能重复的权重。
标签: javascript