मैं एक्सेल में वर्णमाला से यादृच्छिक लंबाई के साथ एक यादृच्छिक स्ट्रिंग बनाना चाहता हूं। उदाहरण के लिए, "jlskdjf", "kjlk", "kljsodif", आदि मैं ऐसा कैसे कर सकता हूं?
मैं एक्सेल में वर्णमाला से यादृच्छिक लंबाई के साथ एक यादृच्छिक स्ट्रिंग बनाना चाहता हूं। उदाहरण के लिए, "jlskdjf", "kjlk", "kljsodif", आदि मैं ऐसा कैसे कर सकता हूं?
जवाबों:
मान लें कि आप लोअर केस अल्फाबेट्स (az) से एक यादृच्छिक लंबाई (1-8 वर्ण) स्ट्रिंग उत्पन्न करना चाहते हैं।
=LEFT( CHAR(RAND()*26+97) & CHAR(RAND()*26+97) &
CHAR(RAND()*26+97) & CHAR(RAND()*26+97) &
CHAR(RAND()*26+97) & CHAR(RAND()*26+97) &
CHAR(RAND()*26+97) & CHAR(RAND()*26+97),
RAND()*8+1)
प्रत्येक CHAR(...)
1 यादृच्छिक निचला केस वर्णमाला उत्पन्न करता है।
निचले मामले के बजाय ऊपरी केस अल्फाबेट्स (AZ) का उपयोग करने के लिए, आप के CHAR(RAND()*26+97)
साथ बदल सकते हैं CHAR(RAND()*26+65)
। क्योंकि AZ का ASCII कोड 65-90 है, और az का ASCII कोड 97-122 है।
बस सूत्र के लिए, आप उपयोग कर सकते हैं RANDBETWEEN()
के विश्लेषण ToolPak को बदलने के लिए RAND()*xx+yy
।
मान लें कि आप विशिष्ट वर्णों से एक यादृच्छिक लंबाई (1-8 वर्ण) स्ट्रिंग उत्पन्न करना चाहते हैं।
आप सेल A1 में वांछित अक्षर इनपुट कर सकते हैं , उदाहरण के लिए:
abcdefghijklmnopqrstuvwxyz1234567890!@#$%^&*()
फिर,
=LEFT( MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1) &
MID($A$1,RAND()*LEN($A$1)+1,1) & MID($A$1,RAND()*LEN($A$1)+1,1),
RAND()*8+1)
प्रत्येक MID(...)
को A1 से 1 यादृच्छिक वर्ण मिलता है।
हम्म। यह करने के लिए एक समारोह बनाने के लिए VBA के साथ बहुत आसान होगा। सूत्रों के साथ यह थोड़ा अधिक शामिल है।
=CHAR(RANDBETWEEN(97,122))
जाहिर है आपको एक पत्र देता है। इसलिए उन दस को कॉलम ए में रखें।=A1
सेल बी 1 में डालें ।=B1&A2
बी 2 में डालें , और बी 2 भरें: बी 10। (सहमति से, सीमाओं को स्वीकार नहीं करता है।)=OFFSET(B1,RANDBETWEEN(0,9),0)
।सरणी सूत्र या कुछ और के साथ एक आसान तरीका हो सकता है।
एकल वर्ण के लिए एक सूत्र के रूप में आप इसका उपयोग कर सकते हैं
=CHAR(RANDBETWEEN(97,122))
बस अपनी वांछित रैंड रेंज का चयन करने के लिए किसी भी ACSII-Table में देखें।
लेकिन यादृच्छिक लंबाई मुश्किल है, यादृच्छिक लंबाई के कारण नहीं, बल्कि यादृच्छिक वर्णों के कारण जिन्हें आप एक साथ रखना चाहते हैं। अन्यथा, आप केवल आरईपीटी फ़ंक्शन रैंड फ़ंक्शन और उपरोक्त सूत्र के साथ जुड़ सकते हैं।
लेकिन आपके वर्णित परिणाम को फिट करने के लिए, मैं इस कोड का उपयोग करूंगा:
'Put this into a VBA-Module, to be accessable as a worksheet function
Public Function RandomString() As String
Dim i As Long
Dim lngEnd As Long
Dim strResult As String
With Application.WorksheetFunction
lngEnd = .RandBetween(1, 20) 'String length 1-20 characters
strResult = ""
'create a random string of a random length between 1 and 20
For i = 1 To lngEnd
strResult = strResult & Chr(.RandBetween(97, 122))
Next i
End With
Debug.Print strResult
RandomString = strResult 'return the random string
End Function
यदि सूत्रों के साथ इस कोड को करने का कोई समाधान है, तो VBA के बिना, मैं इसके बारे में जानना बहुत पसंद करूंगा :)
=LEFT(CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(97,122))&... repeat as many times as needed, RANDBETWEEN(minimum length, maximum length))
इस सूत्र को "abc ... ABC ... 012" वाले सेल की आवश्यकता नहीं है
[A-zA-Z0-9] से यादृच्छिक 1 चार।
=CHAR(CHOOSE(RANDBETWEEN(1,3),RANDBETWEEN(48,57),RANDBETWEEN(65,90),RANDBETWEEN(97,122)))
यदि अधिक चार्ट की आवश्यकता है, तो CHAR (...) की प्रतिलिपि बनाएँ और उन्हें & से अलग करें।
यह समाधान ओकट्री http://www.mrexcel.com/forum/excel-questions/332116-generate-random-alphanumeric-code.html से है
(यदि आप अक्षर-केवल तार चाहते हैं तो नीचे दिए गए पैराग्राफ को देखें)
8 और 12 के बीच अपरकेस अक्षरों की एक यादृच्छिक स्ट्रिंग और यादृच्छिक लंबाई के अंक उत्पन्न करें:
=MID(BASE(RAND()*10^18,36,12),1,RAND()*4+8)
स्पष्टीकरण:
BASE(RAND()*10^18,36,12)
। चाल एक बड़ी यादृच्छिक संख्या उत्पन्न कर रही है और फिर इसे आधार 36 में परिवर्तित करके कुछ ऐसा प्राप्त करना है जो प्रभावी रूप से एक स्ट्रिंग की तरह दिखता है।RAND()*4+8
सूत्र में उपयोग किए गए कार्य (अंदर बाहर):
RAND()
0 और 1 के बीच एक यादृच्छिक संख्या देता है।BASE(Number; Radix; [MinimumLength])
नंबरिंग सिस्टम से एक पाठ में एक निर्दिष्ट आधार के लिए एक सकारात्मक पूर्णांक देता है। अंक 0-9 और AZ अक्षर का उपयोग किया जाता है।MID("Text"; Start; Number)
किसी पाठ का एक पाठ स्ट्रिंग लौटाता है। पैरामीटर प्रारंभिक स्थिति और वर्णों की संख्या निर्दिष्ट करते हैं।संख्या 10^18
एक जादुई संख्या है जिसके लिए उत्पन्न स्ट्रिंग में अनुगामी या अग्रणी शून्य नहीं होते हैं। यदि आपको अधिक स्ट्रिंग बनाने की आवश्यकता है, तो मैं दो या अधिक ऐसे स्ट्रिंग बनाने और उन्हें संक्षिप्त करने का सुझाव दूंगा।
प्लास नोट: इस समाधान को लिबरऑफिस कैल्क 5 पर परीक्षण किया गया था, लेकिन यह माइक्रोसॉफ्ट एक्सेल में भी काम करना चाहिए क्योंकि फ़ंक्शन उनके प्रलेखन के अनुसार समान हैं (जो मैं लिंक नहीं कर सकता क्योंकि मेरे पास पर्याप्त प्रतिष्ठा नहीं है)।
चूंकि यह एक टिप्पणी में बताया गया था कि ओपी ने विशेष रूप से केवल पत्र के लिए कहा था मैं इस वैकल्पिक संस्करण को इसमें फेंक दूंगा:
=MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(BASE(RAND()*10^22,36,16),"0",""),"1",""),"2",""),"3",""),"4",""),"5",""),"6",""),"7",""),"8",""),"9",""),1,RAND()*4+8)
जहाँ आप अंकों के सभी आवृत्तियों को रिक्त तारों में स्थानापन्न करते हैं। इस तरह आप केवल (अपरकेस) पत्र प्राप्त करते हैं। मैंने इस संभावना के लिए गणना करने के लिए जादुई संख्याओं को बदल दिया है कि प्रारंभिक यादृच्छिक स्ट्रिंग में कई अंक हैं। यह असफल नहीं है, हालांकि इस अर्थ में कि सिद्धांत में आप ऐसे तार प्राप्त कर सकते हैं जो अपेक्षा से कम हैं।
यदि आपको न्यूनतम लंबाई सुनिश्चित करने की आवश्यकता है तो आपके पास यह दूसरा (और भी जटिल) विकल्प है:
=MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(BASE(RAND()*10^22,36,16),"0",CHAR(RANDBETWEEN(65,90))),"1",CHAR(RANDBETWEEN(65,90))),"2",CHAR(RANDBETWEEN(65,90))),"3",CHAR(RANDBETWEEN(65,90))),"4",CHAR(RANDBETWEEN(65,90))),"5",CHAR(RANDBETWEEN(65,90))),"6",CHAR(RANDBETWEEN(65,90))),"7",CHAR(RANDBETWEEN(65,90))),"8",CHAR(RANDBETWEEN(65,90))),"9",CHAR(RANDBETWEEN(65,90))),1,RAND()*4+8)
जहां आप प्रत्येक अंक को यादृच्छिक रूप से उत्पन्न अपरकेस अक्षर के साथ प्रतिस्थापित करते हैं।
मुझे यह कहना है कि मुझे दूसरे जवाबों में प्रदान किए गए लोगों के संबंध में प्रारंभिक समाधान पसंद आया, यह समझने के लिए संक्षिप्त और अपेक्षाकृत सरल है। दो विकल्प इन गुणों को खो देते हैं।
यादृच्छिक वर्ण उत्पन्न करने के लिए:
सेल बी 1 में
= CHAR (RANDBETWEEN (48,131)) (या जो भी चार सेट आप चाहते हैं)
कॉलम भर की संख्या = अपनी स्ट्रिंग में अधिकतम आवश्यक वर्ण भरें
यादृच्छिक लंबाई उत्पन्न करने के लिए
सेल A1 में
= वाम (CONCATENATE (बी 1, सी 1, डी 1, ई 1, एफ 1, G1, एच 1, I1, J1, K1), RANDBETWEEN (0,9))
यादृच्छिक तार उत्पन्न करने के लिए
कॉलम 1 में पूरी तालिका नीचे भरें
INDEX(B1:B10,RANDBETWEEN(1,10))