Рандомное 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='')