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

  • Fr. Eckle Studios

    Fr. Eckle St

    29 Kasım 2006
  • itfigueres

    itfigueres

    12 EKİM 2013
  • Turkish Airlines

    Turkish Airl

    11 AĞUSTOS 2006