Получить три случайных числа без повторов и проверки из списка
задача: получить 3 рандомных числа от 0 до 49 без повторов как я вижу выполнение: получить первое число:
import random
random_number = random.randint(0,49)
#do something
далее добавляем первое случайное число в список, получаем второе случайное число, проверяем- если его нет в списке то ок, если есть- получаем еще раз итд. Работать будет, но мне кажется в дзене Python есть решение проще и короче, просьба подсказать
Ответы (2 шт):
Да, в 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)
Оба способа гарантируют, что выбранные числа будут уникальными и будут случайным образом выбраны из указанного диапазона.
Вот простой способ:
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)