मैं पाइथन में यादृच्छिक स्ट्रिंग उत्पन्न करने का एक और पाइथोनिक तरीका खोजने की कोशिश कर रहा हूं जो स्केल भी कर सकता है। आम तौर पर, मुझेपायथन 2.6 में यादृच्छिक तार (क्या यह ठीक है?)
''.join(random.choice(string.letters) for i in xrange(len))
ऐसा लगता है कि यदि आप लंबी स्ट्रिंग उत्पन्न करना चाहते हैं तो यह बेकार है।
मैं थोड़ी देर के लिए random.getrandombits के बारे में सोच रहा हूं, और यह पता लगा रहा हूं कि बिट्स की एक सरणी में इसे कैसे परिवर्तित किया जाए, फिर हेक्स एन्कोड करें। पायथन 2.6 का उपयोग करके मैं बिटरैरे ऑब्जेक्ट में आया, जिसे दस्तावेज नहीं किया गया है। किसी भी तरह से मुझे यह काम करने के लिए मिला, और यह वास्तव में तेज़ लगता है।
यह लगभग 3 सेकंड में मेरी नोटबुक पर 50 मिलीलीटर यादृच्छिक स्ट्रिंग उत्पन्न करता है।
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]
संपादित
heikogerlach ने बताया कि यह समस्या पैदा कर पात्रों में से एक विषम संख्या थी। यह सुनिश्चित करने के लिए नया कोड जोड़ा गया है कि यह हमेशा हेक्स अंकों की संख्या को भी भेजता है।
अभी भी उत्सुक है कि ऐसा करने का एक बेहतर तरीका है जितना तेज़ है।
बिना एक विशिष्ट लंबाई चाहते हैं मैं इस कर सकता हूँ कैसे इतना है कि यह शामिल केवल करेंगे, तो संख्या, अक्षर और रेखांकित? (इसमें एक डैश शामिल है) – wenbert
@ वेनबर्ट '। जॉइन (random.choice (string.letters + string.digits + "_") xrange (लंबाई) में मैं – yanjost