import random x = random.Random() y = random.Random() z = random.Random() y.setstate(x.getstate()) z.setstate(x.getstate()) x.jumpahead(1) y.jumpahead(11) z.jumpahead(21) random_numbers = zip([x.random() for _ in range(100)], [y.random() for _ in range(100)], [z.random() for _ in range(100)]) first_agreeing = min( random_numbers, key=lambda x: 0 if x[0] == x[1] and x[1] == x[2] else 1) print("Index {0} of {1} had the first agreement between the RNGs: {2}".format( random_numbers.index(first_agreeing), len(random_numbers), first_agreeing ) )