Выполнить randrange () с исключениями из списка - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть список:

l = [6,20,1,3,34]

Я создал функцию, которая генерирует случайные числа в диапазоне от 1 до 50:

from random import randrange
def rand():
     return randrange(1,50,1)

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

Горячо написать мою функцию с исключениями?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020
import random
l = [6, 20, 1, 3, 34]
choices = list(set(list(range(1, 51, 1)))-set(l))
def rand():
    return random.choice(choices)

Мы просто делаем набор чисел от 1 до 50. Затем номера блоков, ie набор чисел, которые нам не нужны. И вычтите 2 набора.

Затем мы остаемся со списком чисел от 1 до 50 без номеров блоков.

Теперь мы просто случайным образом выбираем из этого нового списка названные варианты.

0 голосов
/ 13 апреля 2020

вы можете использовать:

def rand():
    n = randrange(1,, 50)
    while n in l:
        n = randrange(1, 50)
    return n

идея состоит в том, чтобы генерировать случайное число до тех пор, пока этого числа не будет в списке, используя while l oop


или вы можете использовать:

from random import choice

l = [6,20,1,3,34]
not_in_my_list = list(set(list(range(1, 51))).difference(l))

def rand():
    return choice(not_in_my_list)

другое решение - создать список со всеми элементами, которых нет в списке, но которые находятся в требуемом диапазоне, а затем использовать random.choice

...