Случайные строки в Python

python

123810 просмотра

11 ответа

Как вы создаете случайную строку в Python?

Мне нужно, чтобы это было число, затем повторение символов, пока вы не закончили, это то, что я создал

def random_id(length):
    number = '0123456789'
    alpha = 'abcdefghijklmnopqrstuvwxyz'
    id = ''
    for i in range(0,length,2):
        id += random.choice(number)
        id += random.choice(alpha)
    return id
Автор: RHicke Источник Размещён: 12.11.2019 09:07

Ответы (11)


210 плюса

Решение

Генерация строк из (например) строчных букв:

import random, string

def randomword(length):
   letters = string.ascii_lowercase
   return ''.join(random.choice(letters) for i in range(length))

Результаты:

>>> randomword(10)
'vxnxikmhdc'
>>> randomword(10)
'ytqhdohksy'
Автор: sth Размещён: 08.01.2010 07:19

52 плюса

Поскольку этот вопрос довольно случайный, он может работать для вас:

>>> import uuid
>>> print uuid.uuid4()
58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
Автор: Brandon Размещён: 08.01.2010 07:32

31 плюса

>>> import random
>>> import string
>>> s=string.lowercase+string.digits
>>> ''.join(random.sample(s,10))
'jw72qidagk
Автор: ghostdog74 Размещён: 08.01.2010 07:53

15 плюса

Ответ на оригинальный вопрос:

os.urandom(n)

Цитата: http://docs.python.org/2/library/os.html

Возвращает строку из n случайных байтов, подходящих для криптографического использования.

Эта функция возвращает случайные байты из специфического для ОС источника случайности. Возвращенные данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС. В UNIX-подобной системе это будет запрашивать / dev / urandom, а в Windows - CryptGenRandom. Если источник случайности не найден, будет вызвано NotImplementedError.

Простой в использовании интерфейс к генератору случайных чисел, предоставляемый вашей платформой, см. В разделе random.SystemRandom.

Автор: Tom Размещён: 11.08.2013 01:34

5 плюса

Вы можете создавать случайные символы ascii, такие как:

import random
print chr(random.randint(0,255))

А затем создайте более длинную строку вроде:

len = 50
print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] )
Автор: Ross Rogers Размещён: 08.01.2010 07:18

5 плюса

Вы на самом деле не много говорили о том, какой тип случайной строки вам нужен. Но в любом случае вам стоит заглянуть в randomмодуль.

Очень простое решение вставлено ниже.

import random

def randstring(length=10):
    valid_letters='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    return ''.join((random.choice(valid_letters) for i in xrange(length)))

print randstring()
print randstring(20)
Автор: MAK Размещён: 08.01.2010 07:23

2 плюса

random_name = lambda length: ''.join(random.sample(string.letters, length))

длина должна быть <= len (string.letters) = 53. пример результата

   >>> [random_name(x) for x in range(1,20)]
['V', 'Rq', 'YtL', 'AmUF', 'loFdS', 'eNpRFy', 'iWFGtDz', 'ZTNgCvLA', 'fjUDXJvMP', 'EBrPcYKUvZ', 'GmxPKCnbfih', 'nSiNmCRktdWZ', 'VWKSsGwlBeXUr', 'i
stIFGTUlZqnav', 'bqfwgBhyTJMUEzF', 'VLXlPiQnhptZyoHq', 'BXWATvwLCUcVesFfk', 'jLngHmTBtoOSsQlezV', 'JOUhklIwDBMFzrTCPub']
>>> 

Наслаждаться. ;)

Автор: Spouk Размещён: 21.05.2015 05:42

1 плюс

Иногда я хотел, чтобы случайные строки были полуразборчивыми, полузабываемыми.

import random

def randomWord(length=5):
    consonants="bcdfghjklmnpqrstvwxyz"
    vowels="aeiou"

    return "".join(random.choice((consonants,vowels)[i%2]) for i in range(length))

Затем,

>>> randomWord()
nibit
>>> randomWord()
piber
>>> randomWord(10)
rubirikiro

Чтобы избежать 4-буквенных слов, не устанавливайте lengthна 4.

Джим

Автор: Jim Размещён: 28.11.2018 11:52

0 плюса

Установите этот пакет:

pip3 install py_essentials

И используйте этот код:

from py_essentials import simpleRandom as sr
print(sr.randomString(4))

Более подробная информация о методе и других параметрах доступна здесь.

Автор: phyyyl Размещён: 11.02.2018 11:40

0 плюса

Эта функция генерирует случайную строку, состоящую из прописных, строчных букв, цифр, разделителя длины, no_of_blocks для указания формата строки

Например: len_sep = 4, no_of_blocks = 4 сгенерирует следующий шаблон,

F4nQ-Vh5z-JKEC-WhuS

Где, разделитель длины добавит «-» после 4 символов

xxxx-

ни один из блоков не сгенерирует следующий набор символов в виде строки

XXXX - XXXX - XXXX - XXXX

если требуется одна случайная строка, просто оставьте переменную no_of_blocks равной 1 и len_sep, чтобы указать длину случайной строки.

Например: len_sep = 10, no_of_blocks = 1, будет генерировать следующий шаблон, т.е. случайная строка длиной 10 ,

F01xgCdoDU

import random as r

def generate_random_string(len_sep, no_of_blocks):
    random_string = ''
    random_str_seq = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    for i in range(0,len_sep*no_of_blocks):
        if i % len_sep == 0 and i != 0:
            random_string += '-'
        random_string += str(random_str_seq[r.randint(0, len(random_str_seq) - 1)])
    return random_string
Автор: Manoj Selvin Размещён: 24.02.2018 05:28

0 плюса

import random 
import string

def get_random_string(size):
    chars = string.ascii_lowercase+string.ascii_uppercase+string.digits
    ''.join(random.choice(chars) for _ in range(size))

print(get_random_string(20)

вывод: FfxjmkyyLG5HvLeRudDS

Автор: Rakesh babu Размещён: 14.01.2019 02:24
Вопросы из категории :
32x32