def interleave(*args):
    iters = map(iter, args)
while iters:
    it = random.choice(iters)
try:
    yield next(it)
except StopIteration:
    iters.remove(it)
print(list(interleave(range(1, 5), range(5, 10), range(10, 15))))
Interleaving multiple iterables randomly while preserving their order in python