gpt4 book ai didi

python - 在一个范围内生成多组随机的、不重叠的间隔

转载 作者:行者123 更新时间:2023-12-05 01:38:06 28 4
gpt4 key购买 nike

在特定的整数范围内 [a, b] 我想生成 n 列表,每个列表由 z 组成,不重叠,最小间隔宽度为 w 的随机间隔。非重叠条件应在单个此类列表中理解。

a=0, b=100, n=4, z=3, w=5 的示例:

1. [ [1, 17], [57, 83], [89, 98] ]
2. [ [5, 23], [42, 49], [60, 78] ]
3. [ [70, 76], [80, 89], [93, 99] ]
4. [ [20, 62], [67, 81], [82, 93] ]

目前我使用 numpy.linspace[a,b] 上返回均匀间隔的值 interval 为左区间边界,然后为这些值中的每一个引入一个小的随机变化。 在两个这样的边界内,我然后尝试放置正确的间隔边界,同时遵守最小宽度要求。但是,我的方法在计算上非常昂贵。

在 Python 中实现我的目标的最有效方法是什么?

最佳答案

这是一个建议算法的草图:

  1. 生成总和为 ((b-a)+1) - z*wz 非负整数(0 或更大的整数)。我写了pseudocode此算法基于 Smith 和 Tromble 的“从单位单纯形均匀采样”。
  2. w 添加到以这种方式生成的每个数字中。这导致 z 连续候选区间的大小。
  3. 在每个候选区间内生成一个具有最小长度 w 的随机子区间。这些子区间是算法的实际输出。每个子区间相应地移动 a 及其候选区间的开始。

关于python - 在一个范围内生成多组随机的、不重叠的间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60171086/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com