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

  • iBand IguJoo

    iBand IguJoo

    25 AĞUSTOS 2006
  • TeachMeComputer

    TeachMeCompu

    31 EKİM 2009
  • WPBeginner - WordPress Tutorials

    WPBeginner -

    17 Temmuz 2009