@NOblo

Рандом в питоне ,как сгенерировать число?

Нужно не просто сгенерировать число, нужно чтобы такого числа не было в списке
Например:
j = 10, 20, 30
randint(1, 40)
#нужно сделать так, чтобы числа из кортежа j никак не могли сгенерироваться

?
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Два рандома генерируем по 50% интервалу.
Нет запрещённых - используем оба.
Есть - вычитаем из 100% сумму запрещённого и валидного, и берём модуль; второй рандом - используем как есть.

Итог: каждый рандом - идёт в зачёт без потери производительности.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@maximsemin23
import random

j = [10, 20, 30]


def generateNum(j, minNum, maxNum):
    generatedList = []

    for x in range(minNum, maxNum):
        if x not in j:
            generatedList.append(x)


    num = random.choice(generatedList)
    return num

generateNum(j, 1, 40)

Ответ снизу конечно проще, но там не совсем чистая генерация
Ответ написан
nnikolyaa
@nnikolyaa
Ну типа это. Если уж прям сокращать до атомов.
random_number = random.randint(1, 40)
while random_number!=ЧТО НАДО УБИРАТЬ:
    random_number = random.randint(1, 40)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы