基于链接中提出的思路,我实现了几种不同的“睡眠方法”。其中之一是“二进制睡眠”,它的代码如下:
while (System.currentTimeMillis() < nextTimeStamp)
{
sleepTime -= (sleepTime / 2);
sleep(sleepTime);
}
由於檢查下一時間步是否已到達是在開頭進行的,所以我會預期該方法運行時間過長。但模擬誤差(預期時間 - 實際時間)的累積分布看起來像這樣:alt text http://img267.imageshack.us/img267/4224/errorvscummulativearran.jpg 有人有什麼想法為什麼會得出這樣的結果嗎?也許System.currentTimeMillis()方法不真正返回當前時間?
祝好,
馬克思
@irreputable 當我進行評估時,我還使用了一個德國統計程序創建了一個鐘形曲線。因為無法更改標題,這裡是所有相關項目的英文翻譯:
Häufigkeit = frequency
Fehler = error Mittelwert = average Std-Abw = standard deviation alt text http://img694.imageshack.us/img694/2254/bellcurve.jpg