【发布时间】:2008-11-03 00:30:40
【问题描述】:
对于我正在编写的随机事件生成器,我需要一个简单的算法来生成随机范围。
所以,例如:
我可以说我想要 10 个随机间隔,在 1/1 和 1/7 之间,没有重叠,在状态 1 事件加起来为 1 天,状态 2 事件加起来的状态 (1,2,3)到 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 上发布这个。
【问题讨论】:
-
无论间隔如何,状态 1 的事件是否总是加起来为 1(状态 2 也是如此)?你需要多随机?什么类型的分布?
-
正确,在示例中,状态 1 的事件总加起来为 1 天,状态 2 的总和为 2 天。所以它是随机的,但它有上限。我希望东西分布在几个标准偏差内。
-
标准偏差实际上是没有意义的,样本量为 10,分布在 3 个事件中。
-
更正,我在平均持续时间 - 平均持续时间 / 2 和平均持续时间 + 平均持续时间 / 2 之间选择了持续时间
标签: c# algorithm date-range