কম্পিউটার টিউটোরিয়াল

C++ ব্যবহার করে মিড-স্কোয়ার হ্যাশিং

সমস্যা বিবরণ

মিড-স্কোয়ার পদ্ধতি হচ্ছে ছদ্ম-স্মার্ট (pseudorandom) সংখ্যা জেনারেট করার একটি পদ্ধতি। এটি জন voneumann-দ্বারা আবিষ্কৃত হয়েছিল এবং ১৯৪৯ সালে একটি কনফারেন্সে বর্ণনা করা হয়েছিল।

  • এই কৌশলে, একটি ইনিশিয়াল সিড ভ্যালু নেওয়া হয় এবং সেটিকে স্কোয়ার করা হয়।
  • মাঝপথের কিছু ডিজিট বের করে সেগুলো থেকে একটি নতুন সংখ্যা তৈরি করা হয় যা নতুন সিড হিসেবে কাজ করে।
    • সিড ৩৪৫৬ ধরি। এর স্কোয়ার ১১৯৪৩৯৩৬
    • মাঝপথের ৪ ডিজিট নেওয়া হয় নতুন সিড হিসেবে: ৯৪৩৯। এর স্কোয়ার ৮৯০৯৪৭২১
    • আবার মাঝপথের ৪ ডিজিট: ০৯৪৭
    • এই প্রক্রিয়া পুনরাবৃত্তি করুন

এলগরিদম

1. ইনিশিয়াল সিড ভ্যালু বেছে নিন
2. সিড ভ্যালুর স্কোয়ার করুন
3. পূর্বের ফলাফল থেকে n ডিজিট নিয়ে সিড আপডেট করুন

উদাহরণ কোড

#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++ Enum: একটি গাইড

  2. C++ কিউ ব্যবহার করে BST-এ একটি পথ রিভার্স করুন

  3. বাইনারি ট্রিতে দেওয়া কীর নেক্সট রাইট নোড খুঁজে বের করা C++-এ

  4. সি++-এ অ্যারেতে একটি কী (Key) থাকার প্রোবাবিলিটি বের করার প্রোগ্রাম