- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想写一个简单的函数,允许从列表中滚动随机项目,我用这段代码做到了:
this.resources = [false, 'nitrogen', 'silicon', 'cobalt', 'magnesium'];
this.assign_resource = function() {
var index = tools.rnd(0, this.resources.length - 1);
return this.resources[index];
};
但是它玩得不好,所以我想把它改成不同的系统,允许一个项目列表(包括空的),它随机选择一个,但每个都有不同的机会(例如这个有 10 %,这个有 20%)。也许有人可以帮助我实现这种功能。
已编辑 -----
例如这可能是新列表:
this.resources = [
{ type: 'empty', chance: 30 },
{ type: 'nitrogen', chance: 10 },
{ type: 'silicon', chance: 20 },
{ type: 'cobalt', chance: 30 },
{ type: 'magnesium', chance: 10 }
];
现在如何使用它才能使它正常发生?
已编辑 2 -----
我正在尝试使用数学找出做得好的编程解决方案,而不是简单地复制数组中的项目,答案在 this 中给出。主题只是解决问题的方法。
最佳答案
我会通过有机会成为结果的对象数组来解决它,总计 1.0
,然后选择一个介于 0 和 1 之间的随机数,然后遍历资源并检查如果将其添加到累计总数中包括您的随机数。
var resources = [
{ resource: false, chance: 0.2 },
{ resource: 'nitrogen', chance: 0.1 },
{ resource: 'silicon', chance: 0.2 },
{ resource: 'cobalt', chance: 0.45 },
{ resource: 'mangesium', chance: 0.05 }
];
function get_result(resouceList) {
//get our random from 0 to 1
var rnd = Math.random();
//initialise our cumulative percentage
var cumulativeChance = 0;
//iterate over our resources
for (var i = 0; i < resouceList.length; i++) {
//include current resource
cumulativeChance += resouceList[i].chance;
if (rnd < cumulativeChance)
return resouceList[i].resource;
}
return false;
}
//test
console.log(get_result(resources));
console.log(get_result(resources));
console.log(get_result(resources));
console.log(get_result(resources));
console.log(get_result(resources));
关于javascript - 从列表中随机选择项目,每个都有不同的机会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44437797/
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我有 2 个不同的 View 设置 View 和默认 View 我无法将 uiswitch 值传递给默认 View 开关在 NSUserDefaults 中存储位置 设置 View .m - (voi
我猜大多数内置的随机生成器会返回类似这样的内容: [0.0, 1.0) 所以如果我想要 50% 的机会,我会使用这样的东西: if random() < .5 或类似的东西: if random()
有没有办法使用合作伙伴 WSDL 创建机会?我在网上看到的唯一示例是使用 Enterprise WSDL 创建,但它们特定于组织。 在我提到的其他链接中.. http://www.salesforce
背景 我正在使用支持向量机对不平衡类进行二元分类(即我的训练集中正负标签的比例约为 100)。我想优化以下参数:m(我从训练数据中采样的正标签与负标签的比率)、w(类权重)和 SVM 参数 C。 问题
我想根据百分比随机生成 YES 或 NO 所以我想“滚动”并有 25% 的机会击中 YES,75% 的机会击中 NO 是否希望有人能为我指出正确的方向,以最好的方式做到这一点,也许是一些文章或其他什么
我是一名优秀的程序员,十分优秀!