Вам нужно выбрать случайные значения, которые будут случайным образом в течение времени, которое у вас есть осталось , а не полных 24 часов. Так, например, это неверно:
organised.commutes = Math.floor(Math.random() * 24);
... потому что не учитывает время, затраченное organized.pworks
. Итак:
organised.commutes = Math.floor(Math.random() * (24 - organized.pworks));
... и так далее для следующего, который должен учитывать как organized.pworks
, так и organized.commute
. Может быть удобно вести подсчет, чтобы не добавлять дополнительные свойства:
var remaining = 24;
organised.pworks = Math.floor(Math.random() * remaining);
remaining -= organised.pworks;
// ...
organised.commutes = Math.floor(Math.random() * remaining);
remaining -= organised.commutes;
// ...
Тогда вам, вероятно, не нужно случайное значение для последнего, вам просто нужно оставшееся время:
organised.fun = remaining;