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

Есть функция dorandom, которая вычисляет рандомное число от 0 до 8, которое не является числом в параметрах. Допустим: аргумент 4, результат любое рандомное число от 0 до 8, но не 4. Или аргумент 324, результат рандомное число от 0 до 8, но не 3, 2 или 4. Как это реализовать?


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

Автор решения: Gladius
def dorandom(number):
    from random import randint
    while True:
        f = randint(0, 8)
        if f not in str(number):
            return f

print(dorandom(324))
→ Ссылка
Автор решения: Danis
import random


def dorandom(n):
    lst = set(map(int, str(n)))
    if len(lst) > 8 + 1:
        return None
    
    n = random.randrange(8 + 1)
    while n in lst:
        n = random.randrange(8 + 1)
    return n

без цикла:

import random

def dorandom(n):
    lst0 = set(map(int, str(n)))
    lst1 = set(range(8 + 1))
    try:
        return random.choice(list(lst1 - lst0))
    except IndexError:
        return None 

короче:

def dorandom(n):
    try:
        return random.choice(list(set(range(8 + 1)) - set(map(int, str(n)))))
    except IndexError:
        return None
→ Ссылка