मध्य-वर्ग विधि यादृच्छिक संख्याएँ उत्पन्न करने की सबसे सरल विधि में से एक है। यह विधि या तो एक ही संख्या या चक्र को अनुक्रम में पिछली संख्या में बार-बार उत्पन्न करना शुरू कर देगी और अनिश्चित काल तक लूप करेगी। ndigit यादृच्छिक संख्याओं के जनरेटर के लिए, अवधि n से अधिक नहीं हो सकती है। यदि मध्य n अंक सभी शून्य हैं, तो जेनरेटर हमेशा के लिए शून्य का उत्पादन करता है, जबकि शून्य के इन रनों का पता लगाना आसान होता है, वे इस पद्धति के व्यावहारिक उपयोग के लिए बहुत बार होते हैं।
Input − Enter the digit for random number:4 Output − The random numbers are: 6383, 14846, 8067, 51524, .........
एल्गोरिदम
Begin middleSquareNumber(number, digit) Declare an array and assign next_number=0. Square the number and assign it to a variable sqn. Divide the digit by 2 and assign it to a variable t. Divide sqn by a[t] and store it to sqn. For i=0 to digit, do next_number =next _number (sqn mod (a[t])) * (a[i]); sqn = sqn / 10; Done Return the next number End.
उदाहरण कोड
#include <iostream> using namespace std; int a[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000 }; int middleSquareNumber(int number, int digit) { int sqn = number * number, next_number = 0; int t = (digit / 2); sqn = sqn / a[t]; for (int i = 0; i < digit; i++) { next_number += (sqn % (a[t])) * (a[i]); sqn = sqn / 10; } return next_number; } int main(int argc, char **argv) { cout << "Enter the digit random numbers you want: "; int n; cin >> n; int start = 1; int end = 1; start = a[n - 1]; end = a[n]; int number = ((rand()) % (end - start)) + start; cout << "The random numbers are:\n" << number << ", "; for (int i = 1; i < n; i++) { number = middleSquareNumber(number, n); cout << number << ", "; } cout << "........."; }
आउटपुट
Enter the digit random numbers you want: 4 The random numbers are: 6383, 14846, 8067, 51524, .........