@NOblo

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

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

?
  • Вопрос задан
  • 183 просмотра
Решения вопроса 2
pro100chel
@pro100chel
Senior Pomidor Developer | CEO of GOVNOKOD LTD.
import random


def gen_num(min, max, bads):
    while True:
        rand = random.randint(min, max)
        if rand not in bads:
            return rand

j = 1, 2, 3, 4
print(gen_num(1, 40, j))
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Два рандома генерируем по 50% интервалу.
Нет запрещённых - используем оба.
Есть - вычитаем из 100% сумму запрещённого и валидного, и берём модуль; второй рандом - используем как есть.

Итог: каждый рандом - идёт в зачёт без потери производительности.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Shroud228
Python, C++
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)

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

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

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
Кенарий Санкт-Петербург
от 120 000 до 250 000 ₽
24 сент. 2020, в 02:31
700 руб./в час
24 сент. 2020, в 01:04
20000 руб./за проект
23 сент. 2020, в 23:49
500 руб./за проект