我需要从以下数据中获得平均睡眠间隔:
=> 预期:00:00-08:00
=> 预期:01:00-08:00
问题是午夜左右振荡,部分时间在00:00以下,部分时间在00:00左右。 简单的意思是22 + 00 + 02 + 04不起作用。我可以计算午夜的次数(在这种情况下为3次),如果它超过午夜之前,我应该加上25次补偿。 但这并不算那些晚上工作并在8-14岁左右睡觉的人
我的理论是:首先,以某种方式我需要找到峰值,类似于最常去的区域(例如,在9-10中有5个记录,在10-11中,有3个等。 )然后我可以通过增加24小时来决定共同补偿边界值。
您怎么看?
答案 0 :(得分:1)
考虑到午夜的相对差异怎么样? 结果将是(-2 + 0 + 2 + 4)/ 4 = 00:45
答案 1 :(得分:0)
确定您可以说的下限
好的,人们不会在这一天的这个时间去睡觉,如果我得到这个时间,那一定意味着他们整晚都在工作,现在才睡觉
如果时间低于该限制,请在开始和结束时添加24小时。
答案 2 :(得分:0)
假设这个人没有超过24小时睡觉,然后做一个像这样计算的方法(伪代码):
calculateSleepTime(sleepTime, wakeupTime) {
if (sleepTime > wakeupTime) {
return (24 - sleepTime) + wakeupTime;
} else {
return wakeupTime - sleepTime;
}
}
averageSleepTime(sleepTimesArray) {
totalSleptTime = 0;
totalTimesSlept = 0;
foreach (oneSleepTime in sleepTimesArray) {
totalTimesSlept++;
totalSleptTime += calculateSleepTime(oneSleepTime);
}
return totalSleptTime / totalTimesSlept;
}
获得平均睡眠时间后,计算平均睡眠时间或平均唤醒时间,并进行加/减以查找间隔。另一种方法是找到平均睡眠时间和平均唤醒时间(相对于午夜时间考虑)。