Как генерировать уникальное случайное число каждый раз в al oop in Python? - PullRequest
2 голосов
/ 14 апреля 2020

Я знаю, что есть некоторые похожие вопросы, но все они просто возвращают список, мне просто нужен номер, каждый раз, когда случайным образом генерируется уникальное единственное число:

Теперь я использую Python для build al oop:

for _ in range(9):
        random_number=random.randint(1,11)
        print(random_number)

Мой вопрос заключается в том, чтобы каждый раз проверять, является ли random_number уникальным, не повторяясь все 9 раз. Мне не нужен список, просто random_number

Ответы [ 3 ]

5 голосов
/ 14 апреля 2020

Вы можете использовать random.sample в целевом диапазоне номеров, чтобы выбрать из них нужное количество уникальных номеров:

import random
for random_number in random.sample(range(1, 12), 9):
    print(random_number)
3 голосов
/ 14 апреля 2020

Если вы хотите, чтобы каждое число было уникальным среди всех остальных, вы не хотите, чтобы действительно случайное число каждый раз (на самом деле очень маловероятно, чтобы случайные числа в небольшом наборе были уникальными). Я бы сделал это так:

numbers = list(range(1, 12))
random.shuffle(numbers)
for random_number in numbers[:9]:
    print(random_number)

По сути, это все равно что взять колоду карт, перетасовать ее, а затем раздать первые девять карт. Вы получите девять «случайных» карт, но они никогда не будут повторяться, так как они приходят из одной колоды, и вы не переставляете между сделками (следовательно, они не являются действительно случайными, поэтому подсчет карт - вещь ).

2 голосов
/ 14 апреля 2020

random.sample - определенно путь к go, но другая идея состоит в том, чтобы инициализировать все числа в списке и затем случайным образом выдавать по одному:

import random

numbers = list(range(1, 12))
for _ in range(9):
    random_index = random.randint(0, len(numbers)-1)
    selected_rn = numbers.pop(random_index)

Это имеет хорошую интерпретацию: предопределенная последовательность чисел, на которую вы указываете несколько раз и выбираете одно число случайным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...