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

C++ STL ব্যবহার করে অ্যারে শাফল করা

এখানে আমরা C++-এ Shuffle এবং random_shuffle দেখব। এই ফাংশনগুলো C++-এ অ্যারে উপাদান শাফল করতে ব্যবহৃত হয়। আমরা অ্যারে বদলে ভেক্টরও ব্যবহার করতে পারি, ব্যবহার প্রায় একই। প্রথমে random_shuffle() দেখব। এটি রেঞ্জ [left, right)-এ উপাদানগুলো র‍্যান্ডমলি রি-অ্যারেঞ্জ করতে ব্যবহৃত হয়। এই ফাংশন প্রতিটি উপাদানের পজিশন কিছু র‍্যান্ডমলি বাছাই করা পজিশনের সাথে র‍্যান্ডমলি সোয়াপ করে।

আমরা কিছু র‍্যান্ডম জেনারেটর ফাংশন দিয়ে বলতে পারি কোন উপাদান প্রতিবার নেওয়া হবে। যদি আমরা না দিই, তবে এটি নিজস্ব র‍্যান্ডম জেনারেটর ফাংশন ব্যবহার করবে।

উদাহরণ

#include <bits/stdc++.h> 
using namespace std; 
int myRandomGenerator(int j) { 
    return rand() % j; 
} 
main() { 
    srand(unsigned(time(0))); 
    vector<int> arr; 
    for (int j = 1; j < 20; ++j) // ২০টি সংখ্যা জেনারেট করে ভেক্টরে যোগ 
        arr.push_back(j); 
    random_shuffle(arr.begin(), arr.end()); // ইনবিল্ট র‍্যান্ডম ফাংশন দিয়ে শাফল 
    cout << "arr elements:"; 
    for (vector<int>::iterator i = arr.begin(); i != arr.end(); ++i) 
        cout << ' ' << *i; 
    cout << endl; 
    // myRandomGenerator ব্যবহার 
    random_shuffle(arr.begin(), arr.end(), myRandomGenerator); 
    cout << "arr elements:"; 
    for (vector<int>::iterator i = arr.begin(); i != arr.end(); ++i) 
        cout << ' ' << *i; 
    cout << endl; 
}

আউটপুট

arr elements: 5 14 15 6 3 16 13 12 10 2 4 1 17 9 18 11 7 8 19 
arr elements: 8 10 5 6 14 1 15 3 19 16 13 18 7 9 4 12 11 17 2

এখন shuffle() ফাংশনটি কি তা দেখব। এটি 또한 রেঞ্জ [left, right)-এ উপাদানগুলো র‍্যান্ডমলি রি-অ্যারেঞ্জ করতে ব্যবহৃত হয়। এটি একটি ইউনিফর্ম র‍্যান্ডম নাম্বার জেনারেটর নেয়।

উদাহরণ

#include <bits/stdc++.h> 
using namespace std; 
main() { 
    vector<int> arr; 
    unsigned seed = 0; 
    for (int j = 1; j < 20; ++j) // ২০টি সংখ্যা জেনারেট করে ভেক্টরে যোগ 
        arr.push_back(j); 
    shuffle(arr.begin(), arr.end(), default_random_engine(seed)); 
    cout << "arr elements:"; 
    for (vector<int>::iterator i = arr.begin(); i != arr.end(); ++i) 
        cout << ' ' << *i; 
    cout << endl; 
}

আউটপুট

arr elements: 19 7 5 6 12 4 13 3 1 17 11 14 18 2 8 15 9 10 16

random_shuffle() এবং shuffle()-এর একমাত্র পার্থক্য হল, random_shuffle() র‍্যান্ডম ইন্ডেক্স জেনারেট করতে rand() ফাংশন ব্যবহার করে, আর shuffle() ইউনিফর্ম র‍্যান্ডম নাম্বার জেনারেটর ব্যবহার করে। যা হোক, যদি random_shuffle()-এর সাথে ইউনিফর্ম র‍্যান্ডম নাম্বার জেনারেটর পাস করি, তবে সেটাও একইরকম ফলাফল দেবে।

  1. C++ ব্যবহার করে অ্যারেতে সব উপাদানের র‍্যাঙ্ক নির্ণয় করুন

  2. সি++-এ অ্যারে উপাদান ব্যবহার করে অ্যারে সমান করা

  3. সি++ STL ব্যবহার করে অ্যারে প্যালিনড্রোম কিনা তা যাচাই করার প্রোগ্রাম

  4. পয়েন্টার ব্যবহার করে অ্যারে এলিমেন্ট অ্যাক্সেস করার C++ প্রোগ্রাম