সমস্যা বিবরণ
মিড-স্কোয়ার পদ্ধতি হচ্ছে ছদ্ম-স্মার্ট (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