यह C++ प्रोग्राम एक बेस स्ट्रिंग से दिए गए लंबाई के N रैंडम कैरेक्टर सीक्वेंस उत्पन्न करता है। प्रत्येक जनरेटेड सीक्वेंस में यूनिक कैरेक्टर होते हैं (कोई डुप्लिकेट नहीं)।
एल्गोरिदम
शुरुआत
1. फंक्शन GenerateSequence() N कैरेक्टर्स की सीक्वेंस जनरेट करता है:
- रैंडम इंडेक्स के लिए rand() उपयोग करें
- पहला कैरेक्टर सीधे सीक्वेंस में स्टोर करें
- यदि वह सीक्वेंस पहले उपयोग हुआ है, तो उसे छोड़ दें और फिर से रैंडम इंडेक्स जनरेट करें
समाप्ति
उदाहरण कोड
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
void GenerateSequence(char baseStr[], int seqLen, int baseLen, char *sequence) {
int i, j = 0, k, index;
for (i = 0; i < seqLen; i++) {
// पहला कैरेक्टर सीधे स्टोर करें
if (j == 0)
sequence[j++] = baseStr[rand() % baseLen];
else {
retry:
index = rand() % baseLen;
// जांचें कि क्या यह कैरेक्टर पहले से सीक्वेंस में है
for (k = 0; k < j; k++) {
if (baseStr[index] == sequence[k])
goto retry; // डुप्लिकेट मिला, पुनः प्रयास करें
}
sequence[j++] = baseStr[index];
}
}
sequence[j] = '\0'; // नल कैरेक्टर से समाप्त करें
}
int main() {
int n, m, baseLen, i;
char baseStr[100];
cout << "Enter the original string: ";
cin >> baseStr;
cout << "\nEnter the number of strings to generate: ";
cin >> n;
cout << "\nEnter the length of each string: ";
cin >> m;
baseLen = strlen(baseStr);
// जांच: सीक्वेंस लंबाई बेस स्ट्रिंग लंबाई से अधिक नहीं होनी चाहिए
if (m > baseLen) {
cout << "Error: Sequence length cannot exceed base string length!\n";
return 1;
}
// बेहतर रैंडमनेस के लिए सीड सेट करें
srand(time(0));
for (i = 0; i < n; i++) {
char sequence[m + 1];
GenerateSequence(baseStr, m, baseLen, sequence);
cout << "\nSequence " << i+1 << ": " << sequence;
}
return 0;
}
आउटपुट
Enter the original string: tutorialspoint Enter the number of strings to generate: 7 Enter the length of each string: 6 Sequence 1: tuanol Sequence 2: itlurp Sequence 3: tonaiu Sequence 4: untlri Sequence 5: liorpt Sequence 6: liusto Sequence 7: luisot
व्याख्या: प्रोग्राम बेस स्ट्रिंग से बिना रिप्लेसमेंट के रैंडम सैंपलिंग करता है। प्रत्येक जनरेटेड सीक्वेंस में यूनिक कैरेक्टर होते हैं। goto का उपयोग रिकर्सन के बिना रीट्राई लॉजिक के लिए किया गया है। आधुनिक C++ में std::shuffle या std::sample बेहतर विकल्प हैं।