📜  Python – 不重叠的随机范围

📅  最后修改于: 2022-05-13 01:55:32.844000             🧑  作者: Mango

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)]