2010-04-16 13 views
5

सभी डेवलपर्स के रूप में, हम अपने दैनिक काम के हिस्से के रूप में लगातार किसी प्रकार के पहचानकर्ताओं से निपटते हैं। अधिकांश समय, यह बग या समर्थन टिकट के बारे में है। हमारा सॉफ़्टवेयर, एक बग का पता लगाने पर, एक पैकेज बनाता है जिसमें एक टाइमस्टैम्प और एक संस्करण संख्या से स्वरूपित नाम होता है, जो संकुल मिश्रण से बचने के लिए उचित अद्वितीय पहचानकर्ता बनाने का एक सस्ता तरीका है। उदाहरण: "बग रिपोर्ट 20101214 174856 6.4b2"।यादृच्छिक पहचानकर्ता याद रखने के लिए

मेरा दिमाग सिर्फ याद रखने में अच्छा नहीं है। मुझे क्या लगता है कि का अल्फा-न्यूमेरिक पहचानकर्ता उत्पन्न करना आसान तरीका है जो को याद रखना आसान है।

इसमें लगभग 5 मिनट लगते हैं अजगर में निम्नलिखित है, जो आधे रास्ते प्रयोग करने योग्य परिणाम का उत्पादन की तरह एक एल्गोरिथ्म कोड़ा करने के लिए:

import random 

vowels = 'aeiuy' # 0 is confusing 
consonants = 'bcdfghjklmnpqrstvwxz' 
numbers = '' 

random.seed() 

for i in range(30): 
    chars = list() 
    chars.append(random.choice(consonants)) 
    chars.append(random.choice(vowels)) 
    chars.append(random.choice(consonants + numbers)) 
    chars.append(random.choice(vowels)) 
    chars.append(random.choice(vowels)) 
    chars.append(random.choice(consonants)) 
    print ''.join(chars) 

परिणाम इस तरह दिखेगा:

re1ean 
meseux 
le1ayl 
kuteef 
neluaq 
tyliyd 
ki5ias 

यह पहले से ही काफी है अच्छा है, लेकिन मुझे लगता है कि यह भूलना अभी भी आसान है कि उन्हें वास्तव में कैसे लिखा गया है, ताकि यदि आप एक सहयोगी डेस्क पर जाते हैं और उनमें से एक को देखना चाहते हैं, तो अभी भी कठिनाई के लिए संभावित है।

मुझे एल्गोरिदम के बारे में पता है जो पाठ पर ट्रिग्राम विश्लेषण करते हैं (कहते हैं कि आप उन्हें जर्मन में एक पूरी किताब खिलाते हैं) और जो तारों को उत्पन्न कर सकते हैं जो जर्मन शब्दों की तरह दिखते हैं और महसूस करते हैं और आमतौर पर इसे संभालना आसान होता है। इसके लिए बहुत सारे डेटा की आवश्यकता है, हालांकि, इस उद्देश्य के लिए एप्लिकेशन में एम्बेड करने के लिए इसे थोड़ा कम उपयुक्त बनाता है।

क्या आप इस समस्या को हल करने वाले किसी भी प्रकाशित एल्गोरिदम के बारे में जानते हैं?

धन्यवाद!

कार्ल

+5

यादृच्छिक शब्दों को उत्पन्न करने के बारे में सोचने से पहले आपको इसे पढ़ना चाहिए: http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx – Prutswonder

+0

हा, अच्छा है! मैं इसे याद रखूंगा! –

उत्तर

2

मुझे यकीन है कि यह आपके सवाल का जवाब नहीं कर रहा हूँ, लेकिन शायद के बारे में आप कैसे कई अद्वितीय बग रिपोर्ट नंबर की आवश्यकता है।

बस "बीएक्स-3 डी" जैसे चार अक्षर अपरकेस अल्फान्यूमेरिक कुंजी का उपयोग करके, आपके पास 36^4 = 1.7 मिलियन बग रिपोर्ट हो सकती है।

संपादित करें: मैंने अभी आपका नमूना देखा है। यदि आप व्यंजनों और स्वरों के बजाय अक्षरों का उपयोग करते हैं तो शायद परिणाम में काफी सुधार किया जा सकता है।

2

जैसा कि आपने कहा था, आपका नमूना काफी अच्छा है। लेकिन अगर आप यादृच्छिक पहचानकर्ता चाहते हैं जिन्हें आसानी से याद किया जा सकता है, तो आपको अल्फान्यूमेरिक और न्यूमेरिक वर्णों को मिश्रण नहीं करना चाहिए। इसके बजाय, आप कुछ अंकों के साथ अल्फान्यूमेरिक स्ट्रिंग को पोस्टफिक्स करने का विकल्प चुन सकते हैं।

इसके अलावा, आपके नमूने में आपने बुद्धिमानी से 'ओ' को छोड़ दिया, लेकिन 'एल' के बारे में भूल गए, जिसे आप आसानी से '1' से भ्रमित कर सकते हैं। मेरा सुझाव है कि आप 'एल' को स्वागत के रूप में हटा दें। ;-)