Вариант 1.
const breakUp = (number, count) => {
const numbers = [];
for (let index = 0; index < count; index++) {
const random = index === count - 1
? number
: Math.round(Math.random() * number);
numbers.push(random);
number -= random;
}
numbers.sort((a, b) => b - a);
return numbers;
};
const numbers = breakUp(100, 4);
console.log(numbers); // [76, 15, 6, 3]
Вариант 2.
const breakUp = (number, count) => Array.from({ length: count }, (_, index) => {
const random = index === count - 1
? number
: Math.round(Math.random() * number);
number -= random;
return random;
}).sort((a, b) => b - a);
Вариант 3.
const breakUp = (number, count) => {
const numbers = new Set();
while (numbers.size < count) {
const previousSize = numbers.size;
const random = numbers.size === count - 1
? number
: Math.floor(Math.random() * number);
numbers.add(random);
if (previousSize < numbers.size) {
number -= random;
}
}
return [...numbers.values()].sort((a, b) => b - a);
};