JavaScript

Задача по программированию на JavaScript

Помогите решить задачку. Нужно на js написать функцию, которая будет возвращать массив случайных чисел в диапазоне от min до max, при этом количество элементов должно быть равно n, а сумма всех чисел массива m.
Например:
min = 1
max = 5
n = 5
m = 17
должен получиться один из вариантов [4, 5, 3, 2, 3]
!#
!!! #1 Chika
811
это ппц какая сложная задача! разложение на слагаемые называется. я такое еще не проходил но своровал формулу нахождения всех комбинаций для заданного натуралоьного числа. и все эти комбинации фильтрую по твоим хотелкам из задачи. вышло много кода можно доделать но я пока в этом не шарю! но работает

 const getRandomIntInclusive = (min, max) => { 
min = Math.ceil(min);
max = Math.floor(max);

return Math.floor(Math.random() * (max - min + 1) + min);
};

// эту функцию своровал с сайта!! это комбинаторика сложно для меня
function split(n) {
var result = [];
var temp = [];

for(var i = 0; i < n; ++i) {
temp.push(1);
}

while(temp[0] !== n) {
result.push([...temp]);

var min = temp[0];
var minindex = 0;
var sum = temp[0];
var tempsum = temp[0];

for(var j = 1; j < temp.length - 1; ++j) {
tempsum += temp[j];

if (min > temp[j]) {
min = temp[j];
minindex = j;
sum = tempsum;
}
}

temp[minindex] += 1;
sum += 1;
temp.splice(minindex+1);

for (var k = 0; k < n - sum; ++k) {
temp.push(1);
}
}

return result;
}

// тут уже твоя функция. надо проверить на ввод плохих данных еще !
function random(min, max, n, m) {
var splittedVariants = split(m);

var results = splittedVariants
.filter((splittedVariant) => {
if (splittedVariant.length !== n) {
return false;
}

return splittedVariant.every((number) => {
return number >= min && number
Да
Давид
161
Лучший ответ
!!! #1 Chika Спасибо за решение, оно работает, но как я и ожидал только с небольшим набором чисел)) если выбрать допустим от 1 до 10, 10 чисел и сумму 97, то получаем бесконечный цикл)) а мне нужен еще больше набор чисел) походу без супер компьютера мою не решить)
Давид или просто сделать словарь уже вычесленных чисел на супер компьютере бгг )
 let n = 5; 
let min = 1;
let max = 5;
let m = 17;
let array = [];
function exercise() {
for (let i = 0; i < n; i++) {
array.push(Math.floor(Math.random() * (max - min) + min))
}
return array;
}
console.log(exercise());
Вот как то так, а как учитывать m я не придумал
Den Foreva
Den Foreva
6 773