Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में मिड-स्क्वायर हैशिंग।

समस्या कथन

मध्य-वर्ग विधि छद्म यादृच्छिक संख्याएँ उत्पन्न करने की एक विधि है। इस पद्धति का आविष्कार जॉन वॉन न्यूमैन ने किया था और 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

  1. सी ++ कतार का उपयोग करके बीएसटी में पथ को उलट दें

    एक बाइनरी सर्च ट्री को देखते हुए, और उदाहरण के लिए, हमें किसी विशेष कुंजी से इसके पथ को उलटने की आवश्यकता होती है। समाधान खोजने के लिए दृष्टिकोण इस दृष्टिकोण में, हम एक कतार बनाएंगे और सभी नोड्स को तब तक धकेलेंगे जब तक हमें रूट नहीं मिल जाता। उदाहरण   #include <bits/stdc++.h> using n

  1. C++ में दी गई कुंजी का अगला दायां नोड खोजें

    इस समस्या में, हमें एक बाइनरी ट्री बीटी और एक प्रमुख मूल्य दिया जाता है। हमारा काम किसी दिए गए कुंजी का अगला दायां नोड ढूंढना है। बाइनरी ट्री एक विशेष डेटा संरचना है जिसका उपयोग डेटा संग्रहण उद्देश्यों के लिए किया जाता है। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट key = 4 आउटपुट 5 स्पष्ट

  1. C++ में सरणी में मौजूद कुंजी K की प्रायिकता

    आकार एन की एक सरणी के साथ दिया गया है और कार्य किसी सरणी में उपलब्ध होने पर दिए गए तत्व k की संभावना को खोजना है। संपूर्ण सरणी को n तक पार करें जो किसी सरणी में तत्वों की संख्या के बराबर है और दिए गए तत्व या कुंजी k की खोज करें। यदि तत्व किसी सरणी में मौजूद है तो इसकी संभावना की गणना करें अन्यथा 0