Получить три случайных числа без повторов и проверки из списка

задача: получить 3 рандомных числа от 0 до 49 без повторов как я вижу выполнение: получить первое число:

import random
random_number = random.randint(0,49)
#do something

далее добавляем первое случайное число в список, получаем второе случайное число, проверяем- если его нет в списке то ок, если есть- получаем еще раз итд. Работать будет, но мне кажется в дзене Python есть решение проще и короче, просьба подсказать


Ответы (2 шт):

Автор решения: hedgehogues

Да, в Python есть функция sample из модуля random, которая выбирает случайное подмножество элементов из данной коллекции.

Вы можете сгенерировать список чисел от 0 до 49, а затем вызвать random.sample, указав количество чисел, которое нужно выбрать (3 в данном случае). Это будет быстрее и компактнее, чем использовать цикл.

Пример:

import random

# сгенерируем список чисел от 0 до 49
numbers = list(range(50))

# выберем три случайных числа из этого списка
selected_numbers = random.sample(numbers, k=3)

print(selected_numbers)

Также можно использовать функцию shuffle из того же модуля, чтобы перемешать элементы списка и взять первые три. Это также будет работать, но будет работать немного медленнее.

Пример:

import random

# сгенерируем список чисел от 0 до 49
numbers = list(range(50))

# перемешаем элементы списка
random.shuffle(numbers)

Оба способа гарантируют, что выбранные числа будут уникальными и будут случайным образом выбраны из указанного диапазона.

→ Ссылка
Автор решения: He1TPOH

Вот простой способ:

from random import randint as rnd

list_of_nums = list()
for run in range(3):
    while True:
        r = rnd(0, 49)
        if r not in list_of_num:
            list_of_nums.append(r)
→ Ссылка