Случайный номер Python Уникальный генератор чисел перед использованием новых номеров

Скажем, у меня есть случайные числа 0-9. Я хочу найти способ получить значения 0-9, но я не хочу повторять другое число, пока все остальные значения не будут использоваться равным количеством раз.

Ex. 4, 6, 5, 3, 0, 1, 9, 2, 7, 8, (rand number, потому что я использовал каждый другой номер один раз)

Есть ли эффективный способ сделать это?

Повторно перемешайте диапазон нужных чисел и соедините их:

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) 

Или:

 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)))