【发布时间】:2017-11-10 06:59:33
【问题描述】:
我想写一个简单的函数,允许从列表中滚动随机项目,我用这个代码做到了:
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,1,2]会给1一个 2/ 3 概率或基于随机索引号返回。 -
你在哪里指定机会?像这样?
this.resources = [false, ['nitrogen', 0.5], ['silicon', 0.2], ['cobalt', 0.2], ['magnesium', 0.1]];另外,false是否适用于未分配资源的情况? -
添加到我的评论中,你会想要this
-
我更新了我的问题,指出特定项目发生的可能性
标签: javascript arrays random