使用JavaScript,我如何生成30个随机整数,并将这30个整数的总和设为60000?我需要脚本在每次运行时生成一组不同的数字,确保总数始终为60000
var n = 30;
var total = 60000;
var min = 10;
var max = 5000;
for (i = 0; i < n; i++) {
// Math.floor(Math.random()*(max-min+1)+min); ??
}
为了避免过大和过小的数字,可能需要最小值和最大值
答案 0 :(得分:1)
您可以尝试这样的事情:
number - 1
n-1
随机数进行循环,最后一个值应为max - currentSum
。由于其余数字是随机的,这种差异也是随机的,这也将确保总数相等。我还添加了一个标志来检查唯一值。目前我刚刚添加了1
,但这不会确保其唯一性,但是因为它超出范围,不会纠正它。
<强>代码强>
function getRandomInRange(max) {
var raiseVal = Math.pow(10, (max.toString().length - 1) || 1);
return Math.floor(Math.random() * raiseVal) % max;
}
function getRandomNumbers(max, n, uniqueNum) {
var nums = [];
var sum = 0;
for (var i = 0; i < n - 1; i++) {
let r = getRandomInRange(max - sum);
if(uniqueNum && nums.indexOf(r) > -1){
r += 1;
}
nums.push(r)
sum += r;
}
nums.push(max - sum);
console.log(nums)
return nums
}
getRandomNumbers(3, 3, true)
getRandomNumbers(3, 3)
getRandomNumbers(1000, 10)
getRandomNumbers(600000, 30)
&#13;