মাল্টিপ্লাই-উথ-ক্যারি পদ্ধতি হল অ্যাড-উথ-ক্যারি জেনারেটরের একটি বৈকল্পিক যা মার্সাগ্লিয়া এবং জামান (1991) দ্বারা প্রবর্তিত হয়েছিল। এই পদ্ধতির প্রধান সুবিধা হল যে এটি সাধারণ কম্পিউটার পূর্ণসংখ্যার পাটিগণিতকে আমন্ত্রণ জানায় এবং প্রায় 260 থেকে 22000000 পর্যন্ত সীমাহীন র্যান্ডম সংখ্যার ক্রমগুলির খুব দ্রুত প্রজন্মের দিকে নিয়ে যায়৷
MWC বেস b-এ কম্পিউটার শব্দের আকারের সমান এবং গুণক a এবং lag r নির্ধারণ করা হয় মডুলাস p =ab r −1। এখানে, a বেছে নেওয়া হয়েছে যাতে মডুলাসটি প্রাইম এবং গুণকের দীর্ঘ সময় থাকে।
অ্যালগরিদম
Begin Declare maximum _sequence _elements, b, r, c[maximum _sequence _elements], x[maximum _sequence _elements] Read the variables maximum _sequence _elements, b, r m = rand() mod b c[0] = rand() mod m x[0] = rand() mod b For I = 1 to maximum_sequence_element, do x[i] = (m * x[i - r] + c[i - 1]) mod b c[i] = (m * x[i - r] + c[i - 1]) / b print the sequence. Done. End.
উদাহরণ কোড
#include <iostream> using namespace std; int main(int argc, char **argv) { int max_Seq_Elements = 7; int b = 300; int m = rand() % b; int r = 1; int c[max_Seq_Elements]; int x[max_Seq_Elements]; c[0] = rand() % m; x[0] = rand() % b; cout << "The random number sequence is: " << x[0]; for (int i = 1; i < max_Seq_Elements; i++) { x[i] = (m * x[i - r] + c[i - 1]) % b; c[i] = (m * x[i - r] + c[i - 1]) / b; cout << " " << x[i]; } cout << "..."; }
আউটপুট
The random number sequence is: 177 173 226 221 56 157 84...