idek
idek

Reputation: 23

Python Random Number Unique number generator before using new numbers

Say I have some random numbers 0-9. I want to find a way to get the values 0-9, but I do not want to have a repeat of another number until all the other values have been used an equal number of times.

Ex. 4, 6, 5, 3, 0, 1, 9, 2, 7, 8, (rand number because I used every other number once)

Is there any efficient way to do this?

Upvotes: 2

Views: 125

Answers (1)

Blender
Blender

Reputation: 298364

Repeatedly shuffle the range of numbers you want and concatenate them:

import random

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = []

for i in range(100):
    random.shuffle(numbers)
    result.extend(numbers)

print(result)

Or:

import random
import itertools

def generate_numbers():
    numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    while True:
        random.shuffle(numbers)
        yield from numbers

print(list(itertools.islice(generate_numbers(), 50)))

Upvotes: 4

Related Questions