2

次のデータから平均睡眠間隔を取得する必要があります。

  • 22:00-06:00
  • 00:00-08:00
  • 02:00-10:00

=>予想:00:00-08:00

  • 22:00-06:00
  • 00:00-08:00
  • 02:00-10:00
  • 04: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時間を追加することによって。

どう思いますか?

4

3 に答える 3

1

真夜中との相対的な違いを考慮に入れるのはどうですか?結果は (-2+0+2+4)/4 = 00:45 になります。

于 2012-04-21T13:39:00.110 に答える
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;
}

平均睡眠時間を取得したら、平均睡眠時間または平均起床時間を計算し、加算/減算を行って間隔を見つけます。これに代わる方法は、平均睡眠時間と平均起床時間を見つけることです (真夜中の時間を考慮して)。

于 2012-04-21T13:41:50.413 に答える
0

言える下限を決める

わかりました、人々は 1 日のこの時間帯に眠りにつくことはありません。私がこの時間帯に就いた場合、それは彼らが一晩中働いて今だけ寝ていることを意味するに違いありません

時間がその制限を下回っている場合は、開始時間と終了時間の両方に 24 時間を追加します。

于 2012-04-21T13:38:08.690 に答える