Python: rangos aleatorios no superpuestos

A veces, mientras trabajamos con Python, podemos tener problemas en los que necesitamos extraer N rangos aleatorios que no se superponen por naturaleza y con un tamaño de rango determinado. Esto puede tener aplicaciones en las que trabajamos con datos. Vamos a discutir cierta forma en que se puede realizar esta tarea.

Método: Uso any() + randint() del bucle +
Esta es una forma de fuerza bruta en la que se puede realizar esta tarea. En esto, extraemos rangos aleatorios usando randint(), y verificamos que no se repitan los rangos de números usando any() y loop.

# 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)) 
Producción :

The N Non-overlapping Random ranges are : [(5347, 5352), (7108, 7113), (5479, 5484), (1906, 1911), (2228, 2233), (5206, 5211), (3260, 3265)]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *