比如将100随机分配为10个,最小1,最大12
PS:下面是我的实现方式(先生成一个10个数的数组,每个数组元素都是1,然后再进入循环,随机生成一个数组下标进行 +1,如果当前数组元素超过最大数12则不进行叠加)
/ 最小1%, 最大12% /
function ranAllo(value, min, max, length) {
var ran = [], arrId;
//循环存放数组最小值
for(var i = 0; i < length; i++) {
ran[i] = min;
}
//计算剩下的值
var spare = value - (min * length);
while(spare > 0) {
//生成数组随机ID
arrId = Math.round(Math.random() * length);
if(ran[arrId] < max) {
ran[arrId] += 1;
spare--;
}
}
console.log(ran);
return ran
}
ranAllo(100, 1, 12, 10);
但是这种实现方式的性能比较低,请问有没有其他比较好的实现方式
运行结果(还真有背时运气的,才得1)