Helpex - Trao đổi & giúp đỡ Đăng nhập
83

Làm thế nào để bạn tạo một chuỗi ngẫu nhiên trong Python?

Tôi cần nó là số sau đó lặp lại ký tự cho đến khi bạn hoàn thành đây là những gì tôi tạo ra

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
83 hữu ích 2 bình luận 142k xem chia sẻ
11 trả lời 11
208

Tạo chuỗi từ (ví dụ) ký tự chữ thường:

import random, string

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

Các kết quả:

>>> randomword(10)
'vxnxikmhdc'
>>> randomword(10)
'ytqhdohksy'
208 hữu ích 5 bình luận chia sẻ
48

Vì câu hỏi này khá, uh, ngẫu nhiên, điều này có thể phù hợp với bạn:

>>> import uuid
>>> print uuid.uuid4()
58fe9784-f60a-42bc-aa94-eb8f1a7e5c17
48 hữu ích 2 bình luận chia sẻ
31
>>> import random
>>> import string
>>> s=string.lowercase+string.digits
>>> ''.join(random.sample(s,10))
'jw72qidagk
31 hữu ích 5 bình luận chia sẻ
15

Trả lời cho câu hỏi ban đầu:

os.urandom(n)

Trích dẫn từ: http://docs.python.org/2/l Library / os.html

Trả về một chuỗi n byte ngẫu nhiên phù hợp cho việc sử dụng mật mã.

Hàm này trả về các byte ngẫu nhiên từ nguồn ngẫu nhiên dành riêng cho hệ điều hành. Dữ liệu được trả về phải đủ khó đoán đối với các ứng dụng mã hóa, mặc dù chất lượng chính xác của nó phụ thuộc vào việc triển khai HĐH. Trên một hệ thống giống như UNIX, điều này sẽ truy vấn / dev / urandom và trên Windows, nó sẽ sử dụng CryptGenRandom. Nếu không tìm thấy nguồn ngẫu nhiên, NotImcellenceedError sẽ được nâng lên.

Để có giao diện dễ sử dụng cho trình tạo số ngẫu nhiên do nền tảng của bạn cung cấp, vui lòng xem Random.SystemRandom.

15 hữu ích 0 bình luận chia sẻ
5

Bạn có thể xây dựng các ký tự ascii ngẫu nhiên như:

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

Và sau đó xây dựng một chuỗi dài hơn như:

len = 50
print ''.join( [chr(random.randint(0,255)) for i in xrange(0,len)] )
5 hữu ích 2 bình luận chia sẻ
5

Bạn chưa thực sự nói nhiều về loại chuỗi ngẫu nhiên bạn cần. Nhưng trong mọi trường hợp, bạn nên nhìn vào randommô-đun.

Một giải pháp rất đơn giản được dán dưới đây.

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)
5 hữu ích 1 bình luận chia sẻ
2
random_name = lambda length: ''.join(random.sample(string.letters, length))

độ dài phải là <= len (string.letters) = 53. ví dụ kết quả

   >>> [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']
>>> 

Thưởng thức. ;)

2 hữu ích 0 bình luận chia sẻ
1

Đôi khi, tôi muốn các chuỗi ngẫu nhiên có thể phát âm được, bán dễ nhớ.

import random

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

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

Sau đó,

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

Để tránh các từ có 4 chữ cái, đừng đặt lengththành 4.

Jim

1 hữu ích 0 bình luận chia sẻ
0

Cài đặt gói này:

pip3 install py_essentials

Và sử dụng mã này:

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

Thông tin thêm về phương pháp các tham số khác có sẵn ở đây.

0 hữu ích 0 bình luận chia sẻ
0

Hàm này tạo chuỗi ngẫu nhiên bao gồm chữ hoa, chữ thường, chữ số, vượt qua seperator độ dài, no_of_blocks để chỉ định định dạng chuỗi của bạn

ví dụ: len_sep = 4, no_of_blocks = 4 sẽ tạo ra mẫu sau,

F4nQ-Vh5z-JKEC-WhuS

Trong đó, seperator dài sẽ thêm "-" sau 4 ký tự

XXXX-

không có khối nào tạo ra các ký tự sau dưới dạng chuỗi

XXXX - XXXX - XXXX - XXXX

nếu cần một chuỗi ngẫu nhiên đơn lẻ, chỉ cần giữ biến no_of_blocks bằng 1 và len_sep để chỉ định độ dài của chuỗi ngẫu nhiên.

ví dụ: len_sep = 10, no_of_blocks = 1, sẽ tạo ra mẫu sau tức là. chuỗi ngẫu nhiên có độ dài 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
0 hữu ích 0 bình luận chia sẻ
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)

đầu ra: FfxjmkyyLG5HvLeRudDS

0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ python , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading