How to generate non‑overlapping random ranges as a list of tuples in Python

1 Answer

0 votes
import random
 
def generate_non_overlapping(begin, end, num_ranges):
    # Generate unique random points, the random numbers is chaotic
    # The ranges increase and become non‑overlapping only after sorting
    points = sorted(random.sample(range(begin, end), num_ranges * 2))
    
    # Once sorted, we pair them  
    return [(points[i], points[i + 1]) for i in range(0, len(points), 2)]
 
 
start = 1
end = 500
num_ranges = 8
 
print(generate_non_overlapping(start, end, num_ranges))
 
 
 
 
'''
run:
 
[(90, 102), (106, 140), (161, 174), (176, 243), (269, 276), (340, 359), (363, 392), (442, 445)]
 
'''

 



answered Jan 26 by avibootz
edited Jan 27 by avibootz

Related questions

...