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



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



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



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

605   1  

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

    Ничего не найдено.