我现在用的写法是这样的,取一个0到100的值
然后判断这个值是否在设定的概率百分之10内,如果是,就判定成功。
gl = Math.random()*100;
if(gl<=10)
{
console.log ‘装备掉了!!!’
}
return;
}
但是总感觉概率极高啊。。。。






设计权重值
权重?可是该如何计算权重呢。设一个值?然后从最低到最高?
startBtn(){
let temp;
let data = {
"0":0,
"1":0,
"2":0,
"3":0
};
//随机1000次
for(let i = 0; i < 1000; i++){
temp = this.calWeight([10,20,30,40]);
data[temp] += 1;
}
console.log("每个位置出现的次数",data)
},
calWeight(weightList) {
let totalWeight = 0;
let index;
for (let i = 0; i < weightList.length; i++) {
weightList[i] = Number(weightList[i]);
totalWeight += weightList[i];
}
if (totalWeight <= 0) {
return -1;
}
let random = Math.floor(Math.random() * (totalWeight - 1 + 1) + 1);
let nextWeight = 0;
for (var i = 0; i < weightList.length; i++) {
if (nextWeight < random && random <= nextWeight + weightList[i]) {
index = i;
break;
}
nextWeight += weightList[i];
}
return index;
}
2赞
大佬,请问,totalweight累加起到的是什么作用?totalweight-1+1又是干嘛的呢?
累加就是为了获取总权重值。这样你就知道每个权重值占比多少。+1-1那是一个获取一个随机N~M范围值的方法
1赞
谢谢大佬
学习了
嗯嗯,这个我也是这么做的
单次概率本来就是随机的, 如果想控制概率, 那就设计成积分制, 失败一次加XX分, 分数达到多少必定成功, 成功一次后扣XX分

