生成具有给定密度和重叠的随机间隔

时间:2018-07-20 07:59:45

标签: algorithm random statistics

我正在寻找可以生成测试数据的算法(可能是近似算法)。

我们有一个大的整数间隔[0, n)n可能高达10 ^ 9。我们想要生成每个长度为k的多个较小的间隔(可能是重叠的),所有这些间隔都适合在这个较大的间隔内,并且还满足以下属性:

  1. 这些间隔除以n所覆盖的“单元格”的数量必须等于density(<= 1.0)
  2. 被至少一个间隔覆盖的每个单元实际上平均被overlapping(> = 1.0)个间隔覆盖。例如。 overlay_factor = 1.0的退化情况意味着没有两个区间相交。
  3. 间隔位置在所有其他方面应均匀地随机分布

同时实现(1)和(2)使得此问题变得困难。该算法应产生一个间隔位置数组。

下面的图片演示了n = 20,k = 4,密度= 0.5,重叠= 1.6的一种解决方案:

    ◼◼◼◼
     ◼◼◼◼
   ◼◼◼◼     ◼◼◼◼
       ↓↓↓
◻◻◻◼◼◼◼◼◼◻◻◻◼◼◼◼◻◻◻◻
0                  19

density = 10/20 = 0.5
overlapping = 4*4/10 = 1.6

现实中的应用将以更大的值出现:n≤10 ^ 9,k∈[1 .. 10 ^ 6],密度∈[0.01 .. 1.0],重叠ε[1.0..5.0]。

由于该算法旨在生成测试数据,因此近似解就可以了。

0 个答案:

没有答案