前言
需要实现的功能是,产生四个随机数,合是20。
一、开始
1.定义方法
代码如下(示例):
import lodash from "lodash";
export default {
data() {
return {
init_attribute: [
{
id: 1,
value: 0,
},
{
id: 2,
value: 0,
},
{
id: 3,
value: 0,
},
{
id: 4,
value: 0,
}
]
};
},
methods: {
initAttributeFun(list) {
let arr = lodash.cloneDeep(list);
let obj = this.listRandom(arr);
for (let index = 0; index < this.init_attribute.length; index++) {
const e = this.init_attribute[index];
if(e.id === obj.id) {
if(arr.length === 1) {
e.value = 20 - this.sum(this.init_attribute.map(v => v.value));
return;
};
e.value = this.weightRandom(this.init_attribute);
arr = arr.filter(a => a.id !== e.id);
return this.initAttributeFun(arr);
}
}
},
listRandom(list) {
return list[Math.floor(Math.random() * list.length)];
},
sum(...arr) {
let s = 0;
arr.flat().forEach(v => s+=v);
return s;
},
weightRandom(list) {
let totalWeights = 0;
list.forEach(e => {
totalWeights += e.value;
});
let random = Math.ceil(Math.random() * (20 - totalWeights));
return random;
},
}
}
总结
生成和为20的四个随机数,先随机四个数中的第几个数,再随机产生一个数字。最后一个数据宫总数20 减去三个数之和。
如果有问题,请朋友们评论区留言。