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

  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • SellerDp

    SellerDp

    27 EKİM 2009