2011-02-14 64 views
3

我有一個實時運行的程序,具有可變的幀速率,例如,可以是15fps,可以是60fps。我希望事件平均每5秒發生一次。每幀,我想調用一個函數,該函數將自上一幀以來的時間作爲輸入,並在給定調用時每5秒鐘平均返回一次True。我想了解泊松分佈情況。我該如何做?實時生成(泊松?)隨機變量

回答

4

這實際上取決於你想要使用的分佈,你指定的全部是平均值。就像你所說的,我會希望泊松分佈很好地滿足你的需求,但是你也可以在標題中加入「統一的隨機變量」,這是一個不同的分佈,無論如何,我們只需要和前者一起去。

所以如果你想要一個泊松分佈,你可以使用累積密度函數很容易地生成樣本。只需按照這裏的僞代碼:Generating Poisson RVs,其中5秒是您的lambda值。我們稱這個函數爲Poisson_RN()。

此時的算法非常簡單。

global float next_time = current_time() 

boolean function foo() 
if (next_time < current_time()) 
    next_time = current_time() + Poisson_RN(); 
    return true; 
return false; 
+0

啊不錯,我沒想到下次會發生這種情況。我想到了一個只會被調用的函數,只能使用它的輸入,並擁有該屬性。實際上這將是整潔..我會問在另一個問題 – Claudiu 2011-02-14 05:06:18

0

隨機變量在獨立試驗中以固定比例產生真/假結果稱爲Geometric random variable。在任何時間範圍內,以概率1 /(5 * fps)生成真實值,並且從長遠來看,每5秒會得到一個平均值。