【发布时间】:2020-03-05 03:14:45
【问题描述】:
我正在寻找一种数学方法来生成 [a, b) 之间的随机数,在 [c, d)、[e, f)、[g, h) 等处有孔,其中 a
我在这里找到了许多示例,说明如果缺少一个范围,如何使算法起作用,但似乎无法找到一种可以推广到多个范围的空间/时间有效方法。我的意思是:
一个。所有可能范围的列表并从该列表中选择:不适用于大范围
b.生成一个随机数并检查它是否是范围之一,否则重试:运行时的无限项
一些突出的测试用例可能是:
generate_random(start=0, end=100, exclude: [(2,50),(51, 100)])
generate_random(start=0, end=1e16, exclude: [(1e6,1e7),(1e3, 1e4)])
以下是我找到的一些示例:
【问题讨论】:
标签: algorithm pseudocode