對於一個隨機事件發生器,我在寫我需要一個簡單的算法來生成隨機範圍。在C#中獲得一個範圍內的隨機持續時間
所以,例如:
我可以說我希望10周隨機的時間間隔,和1/1 1/7之間,沒有重疊,在狀態(1,2,3),其中狀態1個事件添加最多1天,狀態2事件加起來2天,狀態3事件加起來剩下的事情。
或者代碼:
struct Interval
{
public DateTime Date;
public long Duration;
public int State;
}
struct StateSummary
{
public int State;
public long TotalSeconds;
}
public Interval[] GetRandomIntervals(DateTime start, DateTime end, StateSummary[] sums, int totalEvents)
{
// insert your cool algorithm here
}
我的工作現在這個樣子,但如果有人打我的解決方案(或優雅的預先存在的算法都知道),我對SO張貼本。
無論間隔(狀態2),狀態1事件總是加起來1嗎?你需要多少隨機數?什麼類型的分配? – 2008-11-03 00:35:53
正確,在示例狀態1事件總是加起來1天,狀態2總是2天。所以它是隨機的,但它有上限。我想要在一些標準偏差內分發東西。 – 2008-11-03 00:49:51
標準偏差在3個事件中分佈的樣本量爲10時實際上沒有意義。 – 2008-11-03 04:20:24