समस्या कथन
मध्य-वर्ग विधि छद्म यादृच्छिक संख्याएँ उत्पन्न करने की एक विधि है। इस पद्धति का आविष्कार जॉन वॉन न्यूमैन ने किया था और 1949 में एक सम्मेलन में इसका वर्णन किया गया था
-
इस तकनीक में, एक प्रारंभिक बीज मान लिया जाता है और इसे चुकता कर दिया जाता है।
-
बीच से कुछ अंक निकाले जाते हैं और ये निकाले गए अंक एक संख्या बनाते हैं जिसे नए बीज के रूप में लिया जाता है।
-
3456 को बीज के रूप में लेते हैं। इसका वर्ग 11943936 है
-
बीच के 4 अंकों को नया बीज मान लें यानी 9439। इसका वर्ग 89094721 है
-
बीच के 4 अंक नए बीज के रूप में लें यानी 0947
-
इस प्रक्रिया को दोहराएं
-
एल्गोरिदम
1. Choose initial seed value 2. Take the square of the seed value 3. Update seed by taking n digits from previous result
उदाहरण
#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