Есть ли способ генерировать случайное семя? что-то вроде этого:
def random_seed(length)
пример вывода:
3273650411015667511766
или есть способ сделать и цифры и буквы? пример вывода:
ryf65s4d4s6df54s6y4fs6f5b4y6s4fy
Есть ли способ генерировать случайное семя? что-то вроде этого:
def random_seed(length)
пример вывода:
3273650411015667511766
или есть способ сделать и цифры и буквы? пример вывода:
ryf65s4d4s6df54s6y4fs6f5b4y6s4fy
Вы можете использовать os.urandom
. Это позволяет вам указать количество случайных байтов, которые вы хотите сгенерировать. Конечно, вы можете конвертировать/интерпретировать эти байты как угодно (целые числа, символы,...). Например:
>>> import os
>>> os.urandom(16)
b'-\xca(\xd2\xf7 \xe3:\x8fj\x19#\xe0-\xb8X'
os.urandom
будет использовать источник случайности ОС (например, значения датчиков и т. д.). Если вы вызываете random.seed()
без аргументов, он также будет отступать в ОС. случайность, если она доступна, иначе текущее системное время.
Возможные способы интерпретации байтов:
>>> int.from_bytes(os.urandom(16), 'big')
305697826269747251034239012950993064203
это, кажется, работает;
import random
length=random.randint(1,30)
chars=[char for char in '0123456789abcdefghijklmnopqrstuvwxyz']
print(chars)
seed=''
for i in range(length): seed=seed+random.choice(chars)
print(seed)
Для целых чисел:
import random
def random_seed(length):
random.seed()
min = 10**(length-1)
max = 9*min + (min-1)
return random.randint(min, max)
Для строк наивный подход может быть:
import random
choices = '0123456789abcdefghijklmnopqrstuvwxyz'
def random_char(pos):
return random.choice(choices)
def random_seed(length):
l = [None]*length
random.seed()
return "".join(list(map(random_char, l)))
Осторожно, это не должно использоваться в целях безопасности, вместо этого вы должны полагаться на os.urandom
.
int
s иstring
s в выводе. Я что-то упускаю? - person Pedro Rodrigues   schedule 20.10.2019int
, а второй для случайныхint
иstring
, и из-за первого я думаю, что эти два вопроса не совпадают. - person RMPR   schedule 20.10.2019