js实现产生n个不为负数的随机数 ,且随机数不大于平均值,并且随机数之和是固定值
时间: 2023-07-18 10:51:16 浏览: 73
JavaScript实现从数组中选出和等于固定值的n个数
5星 · 资源好评率100%
可以使用以下方法实现:
1. 首先计算平均值,即固定值除以随机数的个数。
2. 初始化一个数组,用来存放随机数。
3. 使用一个循环,循环n次,每次生成一个随机数。
4. 生成随机数的方法是:先生成一个0到平均值之间的随机数,然后判断该随机数是否大于平均值减去已有随机数之和,如果大于则将该随机数设为平均值减去已有随机数之和,否则保留该随机数。
5. 最后将随机数数组返回即可。
以下是代码实现:
```javascript
function generateRandomNumbers(n, total) {
const average = total / n;
const numbers = [];
let sum = 0;
for (let i = 0; i < n; i++) {
let randomNumber = Math.random() * average;
if (randomNumber > average - sum) {
randomNumber = average - sum;
}
sum += randomNumber;
numbers.push(randomNumber);
}
return numbers;
}
```
调用方法:
```javascript
const numbers = generateRandomNumbers(5, 20);
console.log(numbers); // [3.393714516236299, 2.67638505252966, 4.969718026029407, 2.852224747407859, 6.107957657796775]
console.log(numbers.reduce((acc, cur) => acc + cur, 0)); // 20
```
注意,由于随机数生成的性质,上述方法并不能保证所有随机数都不大于平均值。但是,平均值和随机数之和是固定的,因此任何一个随机数大于平均值都会导致其他随机数变小。因此,算法是近似正确的,可以满足大部分实际需求。
阅读全文