এলোমেলো সংখ্যা তৈরি করা

C++:
এলোমেলো সংখ্যা তৈরি করা

কিভাবে:

C++ এ র্যান্ডম সংখ্যা তৈরি করতে, আপনি সাধারণত <random> হেডারকে ব্যবহার করবেন, যা C++11 এ অন্তর্ভুক্ত করা হয়েছে, বিভিন্ন ডিস্ট্রিবিউশন থেকে র্যান্ডম সংখ্যা তৈরি করার জন্য বিস্তৃত পরিসরের সুবিধা প্রদান করে।

#include <iostream>
#include <random>

int main() {
    // একটি র্যান্ডম ইঞ্জিন ইনিশিয়ালাইজ করুন
    std::random_device rd;  
    std::mt19937 gen(rd()); 

    // [0, 99] পরিসীমা সংজ্ঞায়িত করুন
    std::uniform_int_distribution<> distrib(0, 99); 

    // সংজ্ঞায়িত পরিসীমায় 5টি র্যান্ডম সংখ্যা তৈরি এবং মুদ্রণ করুন
    for(int n=0; n<5; ++n)
        std::cout << distrib(gen) << ' ';
    return 0;
}

এই কোড নমুনা একটি std::random_device থেকে একটি বীজ নিয়ে একটি মার্সেন টুইস্টার র্যান্ডম নম্বর জেনারেটর ইনিশিয়ালাইজ করে। এরপর [0, 99] পরিসীমায় একটি উনিফর্ম ইন্টিজার ডিস্ট্রিবিউশন সংজ্ঞায়িত করে এবং শেষে এই ডিস্ট্রিবিউশন থেকে 5টি র্যান্ডম সংখ্যা মুদ্রণ করে।

নমুনা আউটপুট এরকম দেখাতে পারে, তবে মনে রাখবেন প্রতিটি এক্সিকিউশন সম্ভবত ভিন্ন ফলাফল উৎপন্ন করবে:

45 67 32 23 88

গভীর ডুব:

ঐতিহাসিকভাবে, C++ এ র্যান্ডম নম্বর জেনারেশন প্রথমত rand() ফাংশন এবং বীজ সেটিং এর জন্য srand() ফাংশনের উপর অনেকটাই নির্ভর করত, যা <cstdlib> হেডারে পাওয়া যায়। তবে, তৈরি সংখ্যার পরিবেশনায় উদারতা ও অনুমানযোগ্যতার অভাবের জন্য এই পদ্ধতি প্রায়ই সমালোচনার মুখে পড়ে।

C++11 এ <random> হেডারের প্রবর্তন একটি গুরুত্বপূর্ণ উন্নতি হিসেবে চিহ্নিত হয়েছে, যা র্যান্ডম সংখ্যা উৎপাদনের জন্য একটি জটিল ব্যবস্থা সরবরাহ করে। প্রদত্ত সুবিধাগুলি বিভিন্ন ইঞ্জিন (যেমন std::mt19937 এর জন্য Mersenne Twister) ও ডিস্ট্রিবিউশনের (যেমন std::uniform_int_distribution এর জন্য ইন্টিজারের উনিফর্ম ডিস্ট্রিবিউশন) মতো সুবিধাগুলি প্রোগ্রামারের বিশেষ প্রয়োজন অনুযায়ী মিশ্রিত করা যায়, যা আরো প্রত্যাশিত আচারণ, উন্নত কর্মক্ষমতা ও বৃহত্তর নমনীয়তা নিশ্চিত করে।

যদিও <random> লাইব্রেরি পুরানো rand() পদ্ধতির চেয়ে অনেক উন্নত, কিন্তু ক্রিপ্টোগ্রাফিক উদ্দেশ্যের জন্য যথার্থভাবে র্যান্ডম সংখ্যা উৎপাদন করা অতিরিক্ত বিবেচনা নির্ভর করে, এবং এরজন্য নিরাপত্তা বিষয়ে বিশেষভাবে নকশা করা লাইব্রেরিগুলো ব্যবহার করা উচিত যা প্রায়শই হার্ডওয়্যার এনট্রপি উৎস ব্যবহার করে।