Рандомное 4-х значное число в котором все элементы разные

Подскажите пожалуйста, как реализовать что бы у меня выходило рандомное число в котором каждая цифра отличается от другой? к примеру в диапазоне от 1234 (все цифры разные, как видно) до 9870. Спасибо.


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

Автор решения: GrAnd

Можно использовать random.sample() чтобы получить уникальный набор цифр. Далее проверить, что этот набор цифр не начинается с 0, и в случае чего переставить этот 0 куда либо ещё (можно просто рандомно перемешивать набор цифр до тех пор пока в начало не встанет что-либо отличное от 0).

import random

def get_random_value():
    # Берём 4 уникальные случайные цифры из набора
    value = random.sample("1234567890", 4)

    # Перемешиваем последовательность до тех пор пока не будет нуля в начале 
    while value[0] == '0':
        random.shuffle(value)

    # Ну или можно просто переставить 0 в конец последовательности 
    #if value[0] == '0':
    #    value.append(value.pop(0))

    # Склеиваем последовательность в строку и преобразуем её в число
    return int(''.join(value))

print(get_random_value())

Если же вас устроят и трёхзначные числа (т.е. с нулём в начале), то выкиньте цикл while.

→ Ссылка
Автор решения: Edisson
import random
 
 
def rdm():
    global n
    n = random.randint(0, 9)
    return n
 
 
num = []
 
for _ in range(4):
    while rdm() in num:
        rdm()
    num.append(n)
 
for i in num:
    print(i, end='')
→ Ссылка