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