SORU
24 NİSAN 2009, Cuma


Python 2.6 rasgele dizeleri (bu iyi mi?)

İyi bir ölçeklendirme olabilir python rastgele string üretme daha pythonic bir yol bulmaya çalışıyorum. Genellikle, benzer bir şey görüyorum

''.join(random.choice(string.letters) for i in xrange(len))

Eğer uzun bir dize oluşturmak istiyorsanız bu berbat.

Rastgele düşünüyordum.bir süre getrandombits ve bit dizisi dönüştürmek için nasıl bulmaktan, sonra hex kodlama. Bu bitarray rastladım python 2.6 kullanarak belgelenmiş değil nesne. Nedense ben işe aldım ve gerçekten hızlı görünüyor.

Sadece 3 saniye içinde benim dizüstü 50mil rasgele bir dize oluşturur.

def rand1(leng):
    nbits = leng * 6   1
    bits = random.getrandbits(nbits)
    uc = u"%0x" % bits
    newlen = int(len(uc) / 2) * 2 # we have to make the string an even length
    ba = bytearray.fromhex(uc[:newlen])
    return base64.urlsafe_b64encode(str(ba))[:leng]

< / ^ hr .

edit

heikogerlach karakter sorunu neden bir tek sayı olduğuna dikkat çekti. Yeni kodu her zaman hex basamaklı bir çift sayı fromhex gönderilen emin olmak için ekledi.

Hala o kadar hızlı ki bunu yapmanın daha iyi bir yolu varsa merak ettim.

CEVAP
24 NİSAN 2009, Cuma


import os
random_string = os.urandom(string_length)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • graham025

    graham025

    25 NİSAN 2006
  • Tech4Geeks

    Tech4Geeks

    8 Ocak 2012
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011