समस्या कथन
मिड-स्क्वायर विधि छद्म-यादृच्छिक संख्या उत्पन्न करने की एक विधि है। इस विधि का आविष्कार जॉन वॉन न्यूमैन ने किया था और 1949 में एक सम्मेलन में वर्णित किया गया था।
- इस तकनीक में, एक प्रारंभिक सीड मान लिया जाता है और उसका वर्ग किया जाता है।
- मध्य से कुछ अंक निकाले जाते हैं और ये निकाले गए अंक एक संख्या बनाते हैं जिसे नए सीड के रूप में लिया जाता है।
- उदाहरण: 3456 को सीड लें। इसका वर्ग 11943936 है। मध्य 4 अंकों को नए सीड के रूप में लें: 9439। इसका वर्ग 89094721 है। मध्य 4 अंक: 0947। इस प्रक्रिया को दोहराएं।
एल्गोरिदम
1. प्रारंभिक सीड मान चुनें 2. सीड मान का वर्ग लें 3. पिछले परिणाम से n अंक लेकर सीड अपडेट करें
C++ उदाहरण
#include <iostream>
#include <ctime>
using namespace std;
long long getTime() {
time_t t = time(NULL);
struct tm *tm = localtime(&t);
long long x = (tm->tm_hour) * 50000000 + (tm->tm_min) * 100000 +
(tm->tm_sec) * 5000 + (tm->tm_mday) * 50 + (tm->tm_year);
return x;
}
long getHash() {
long long key = getTime();
key = key * key;
key = key / 10000;
key = key % 100000000;
return key;
}
int main() {
cout << "Random number: " << getHash() << endl;
return 0;
}
आउटपुट
Random number: 10088419