Search code examples
pythonpython-3.xrandomtuplesunique

How do I make a list of random unique tuples?


I've looked over several answers similar to this question, and all seem to have good oneliner answers that however only deal with the fact of making the list unique by removing duplicates. I need the list to have exactly 5.

The only code I could come up with is as such:

from random import *

tuples = []

while len(tuples) < 5:
    rand = (randint(0, 6), randint(0,6))
    if rand not in tuples:
        tuples.append(rand)

I feel like there is a simpler way but I can't figure it out. I tried playing with sample() from random:

sample((randint(0,6), randint(0,6)), 5)

But this gives me a "Sample larger than population or is negative" error.


Solution

  • One quick way is to use itertools.product to generate all tuple possibilities before using sample to choose 5 from them:

    from itertools import product
    from random import sample
    sample(list(product(range(7), repeat=2)), k=5)