对于一个随机事件发生器,我在写我需要一个简单的算法来生成随机范围。在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