Есть ли способ, чтобы общее время, затрачиваемое на мероприятия, всегда составляло 24 часа? - PullRequest
0 голосов
/ 07 января 2019

Я хочу случайным образом сгенерировать количество часов, которые кто-то тратит на различные действия в день.

Я создал объект, в котором будет храниться ключ объекта (действия), его значения (часы) и массив для их хранения. Я также использовал случайный метод, чтобы сгенерировать количество часов и убедиться, что каждое начальное значение не превышает 24 часа, прежде чем случайным образом сгенерировать следующее свойство объекта. но мне нужно, чтобы количество часов всегда составляло 24 часа.

 let organised = new Object(),
    pworks = null,
    commutes = null,
    fun = null,
    work = false;
    let arr= [];
   if(!work){ 
       organised.pworks = Math.floor(Math.random()*24)
       if(organised.pworks < 24){
           console.log('you spend ' + organised.pworks+'hrs' + ' on Primary Work' )
          arr.push(organised.pworks)
          organised.commutes = Math.floor(Math.random()*24)
          if(organised.commutes + organised.pworks < 24){
            arr.push(organised.commutes)
            console.log('you spend ' + organised.commutes+'hrs' + ' on Commute' )
            organised.fun = Math.floor(Math.random()*24)
            if(organised.commutes + organised.pworks + organised.fun <= 24){
            console.log('you spend ' + organised.fun+'hrs' + ' on having Fun' )
    arr.push(organised.fun)
  }
}

} }

вы тратите 6 часов на основную работу вы тратите 10 часов на поездку на работу Вы тратите 8 часов на удовольствие

1 Ответ

0 голосов
/ 07 января 2019

Вам нужно выбрать случайные значения, которые будут случайным образом в течение времени, которое у вас есть осталось , а не полных 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...