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

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

समस्या कथन

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

    एक बाइनरी सर्च ट्री दिया गया है, और हमें एक विशेष कुंजी से इसके पथ को उल्टा करना आवश्यक है, उदाहरण के लिए। समाधान खोजने का दृष्टिकोण इस दृष्टिकोण में, हम एक क्यू बनाएंगे और रूट मिलने तक सभी नोड्स को पुश करेंगे। उदाहरण left); cout key key = q1.front(); // हम वर्तमान के साथ पहली क्यू तत्व

  1. C++ में बाइनरी ट्री में दी गई कुंजी का अगला दायां नोड ढूंढना C++ में बाइनरी ट्री में दी गई कुंजी का अगला दायां नोड ढूंढना

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

  1. C++ में सरणी में कुंजी K की उपस्थिति की संभावना C++ में सरणी में कुंजी K की उपस्थिति की संभावना

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