Python генератор случайных чисел уникальный номер перед использованием новых чисел
Скажем, у меня есть несколько случайных чисел 0-9. Я хочу найти способ получить значения 0-9, но я не хочу повторять другое число, пока все остальные значения не будут использованы равное количество раз.
Ex. 4, 6, 5, 3, 0, 1, 9, 2, 7, 8, (номер Рэнда, потому что я использовал все остальные числа один раз)
Есть ли какой-нибудь эффективный способ сделать это?
1 ответ:
Несколько раз перетасуйте диапазон чисел, которые вы хотите, и соедините их:
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)))
Comments