我想随机产生某人每天从事各种活动的小时数。
我创建了一个对象,该对象将存储对象键(活动),其值(小时)和一个用于存储它们的数组。我还使用了一种随机方法来生成小时数,并确保在随机生成下一个对象属性之前,每个初始值都不会超过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个小时来享受乐趣
答案 0 :(得分:2)
您需要选择在离开的时间内而不是整整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;