वर्णमाला से यादृच्छिक लंबाई का एक यादृच्छिक स्ट्रिंग कैसे बनाएं?


11

मैं एक्सेल में वर्णमाला से यादृच्छिक लंबाई के साथ एक यादृच्छिक स्ट्रिंग बनाना चाहता हूं। उदाहरण के लिए, "jlskdjf", "kjlk", "kljsodif", आदि मैं ऐसा कैसे कर सकता हूं?

जवाबों:


14

बुनियादी

मान लें कि आप लोअर केस अल्फाबेट्स (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 यादृच्छिक वर्ण मिलता है।


4

हम्म। यह करने के लिए एक समारोह बनाने के लिए VBA के साथ बहुत आसान होगा। सूत्रों के साथ यह थोड़ा अधिक शामिल है।

  • =CHAR(RANDBETWEEN(97,122))जाहिर है आपको एक पत्र देता है। इसलिए उन दस को कॉलम ए में रखें।
  • फिर अगले कॉलम में, =A1सेल बी 1 में डालें ।
  • =B1&A2बी 2 में डालें , और बी 2 भरें: बी 10। (सहमति से, सीमाओं को स्वीकार नहीं करता है।)
  • सेल सी 2 में, डाल दिया =OFFSET(B1,RANDBETWEEN(0,9),0)

सरणी सूत्र या कुछ और के साथ एक आसान तरीका हो सकता है।


1
+1 - मुझे पता था कि एक रास्ता होना चाहिए - हालाँकि, मैं OFFSET के बजाय INDEX का उपयोग करूंगा - जैसेINDEX(B1:B10,RANDBETWEEN(1,10))
Jook

2

एकल वर्ण के लिए एक सूत्र के रूप में आप इसका उपयोग कर सकते हैं

=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 के बिना, मैं इसके बारे में जानना बहुत पसंद करूंगा :)


1

=LEFT(CHAR(RANDBETWEEN(97,122))&CHAR(RANDBETWEEN(97,122))&... repeat as many times as needed, RANDBETWEEN(minimum length, maximum length))


यह कैसे काम करता है पर थोड़ा और संदर्भ वास्तव में जवाब में सुधार करेगा।
बरगी

1

इस सूत्र को "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 से है


0

(यदि आप अक्षर-केवल तार चाहते हैं तो नीचे दिए गए पैराग्राफ को देखें)

8 और 12 के बीच अपरकेस अक्षरों की एक यादृच्छिक स्ट्रिंग और यादृच्छिक लंबाई के अंक उत्पन्न करें: =MID(BASE(RAND()*10^18,36,12),1,RAND()*4+8)

स्पष्टीकरण:

  1. न्यूनतम १२: अंकों और यादृच्छिक अक्षरों के एक यादृच्छिक स्ट्रिंग उत्पन्न करते हैं BASE(RAND()*10^18,36,12)। चाल एक बड़ी यादृच्छिक संख्या उत्पन्न कर रही है और फिर इसे आधार 36 में परिवर्तित करके कुछ ऐसा प्राप्त करना है जो प्रभावी रूप से एक स्ट्रिंग की तरह दिखता है।
  2. 8 और 12, स्ट्रिंग लंबाई के बीच एक यादृच्छिक संख्या उत्पन्न करते हैं RAND()*4+8
  3. आप (2) में उत्पन्न स्ट्रिंग के पात्रों को 1 से (1) तक ले जाएं।

सूत्र में उपयोग किए गए कार्य (अंदर बाहर):

  • 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)

जहां आप प्रत्येक अंक को यादृच्छिक रूप से उत्पन्न अपरकेस अक्षर के साथ प्रतिस्थापित करते हैं।

मुझे यह कहना है कि मुझे दूसरे जवाबों में प्रदान किए गए लोगों के संबंध में प्रारंभिक समाधान पसंद आया, यह समझने के लिए संक्षिप्त और अपेक्षाकृत सरल है। दो विकल्प इन गुणों को खो देते हैं।


ओपी विशेष रूप से केवल वर्णमाला वर्णों के लिए पूछ रहा था। क्या आप इसे संबोधित करने के लिए अपना उत्तर संपादित कर सकते हैं?
संगीत 2

@ music2myear किया, लेकिन इस तरह से आप मूल संस्करण की संक्षिप्तता खो देते हैं।
क्रिस्चियनकैंटो

अगर जरूरतें पूरी हो जाएं तो चिंता ही उपयोगी है। यह उत्तर, हालांकि यह लंबा है, बेहतर है क्योंकि यह वास्तव में ओपी द्वारा पूछे गए विशिष्ट प्रश्न का उत्तर देता है।
संगीत 2

0

यादृच्छिक वर्ण उत्पन्न करने के लिए:

सेल बी 1 में

= CHAR (RANDBETWEEN (48,131)) (या जो भी चार सेट आप चाहते हैं)

कॉलम भर की संख्या = अपनी स्ट्रिंग में अधिकतम आवश्यक वर्ण भरें

यादृच्छिक लंबाई उत्पन्न करने के लिए

सेल A1 में

= वाम (CONCATENATE (बी 1, सी 1, डी 1, ई 1, एफ 1, G1, एच 1, I1, J1, K1), RANDBETWEEN (0,9))

यादृच्छिक तार उत्पन्न करने के लिए

कॉलम 1 में पूरी तालिका नीचे भरें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.