Прошу прошения, если данный варинат уже был, распределяю добавки к минимальному значению.
Последнее число, в принципе, и не может быть случайным по самой формулировке задачи (оно закономерно является разницей расчленяемого числа и суммы предыдущих полученных чисел).
<script>
window.onload = function () {
function f(num, part, min) {
if (num / part < min) {
alert('не реально');
return;
}
var rest = num - min * part;
var mas = [];
var elem = 0;
for (var i = 1; i < part; i++) {
elem = Math.round(rest * Math.random());
mas.push(min + elem);
rest -= elem;
}
mas.push(min + rest);
alert(mas);
}
f(130, 3, 20)
}
</script>