function test(){
var sum=1;
var rm = [];
while(true){
var r = Math.random();
sum = sum-r;
if (sum>0) {
rm.push(r);
continue;
}
if (sum<0) {
var gap = 0-sum;
r = r-gap;
rm.push(r);
return rm;
}
if (sum==0) return rm;
}
}
var d = test();
console.log(d);
function ran(sum) {
var arr = [] //收集产生的随机数
function arrSum(arr) { //数组求和函数
var a = 0
for (i = 0; i < arr.length; i++) {
a += arr[i]
}
return a
}
while (arrSum(arr) < sum) { //已产生的随机数的和小于最大值时
var max = sum - arrSum(arr) //最大为最大值与当前和的差
arr.push(Math.floor(Math.random() * max) + 1) //继续往里填
}
return arr //返回填好的随机数数组
}
console.log(ran(30))
认证高级PHP讲师