Python – 不重叠的随机范围
有时,在使用Python时,我们可能会遇到需要提取 N 个在性质上不重叠且具有给定范围大小的随机范围的问题。这可以有我们处理数据的应用程序。让我们讨论可以执行此任务的特定方式。
方法:使用any() + randint()
+ 循环
这是可以执行此任务的蛮力方式。在此我们使用 randint() 提取随机范围,并使用 any() 和循环检查数字范围的不重复。
# Python3 code to demonstrate working of
# Non-overlapping Random Ranges
# Using loop + any() + randint()
import random
# initializing N
N = 7
# initializing K
K = 5
# Non-overlapping Random Ranges
# Using loop + any() + randint()
tot = 10000
res = set()
for _ in range(N):
temp = random.randint(0, tot - K)
while any(temp >= idx and temp <= idx + K for idx in res):
temp = random.randint(0, tot - K)
res.add(temp)
res = [(idx, idx + K) for idx in res]
# printing result
print("The N Non-overlapping Random ranges are : " + str(res))
输出 :
The N Non-overlapping Random ranges are : [(5347, 5352), (7108, 7113), (5479, 5484), (1906, 1911), (2228, 2233), (5206, 5211), (3260, 3265)]