Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để tạo các số ngẫu nhiên bằng phương pháp Middle Square

Phương pháp bình phương giữa là một trong những phương pháp đơn giản nhất để tạo số ngẫu nhiên. phương pháp này sẽ bắt đầu tạo lặp lại cùng một số hoặc chu kỳ cho một số trước đó trong trình tự và lặp lại vô thời hạn. Đối với bộ tạo các số ngẫu nhiên ndigit, khoảng thời gian không thể dài hơn n. Nếu n chữ số ở giữa tất cả đều là số 0, thì Máy phát điện sẽ xuất ra các số 0 mãi mãi, trong khi các số 0 này rất dễ phát hiện, chúng xảy ra quá thường xuyên để phương pháp này không được sử dụng trong thực tế.

Input − Enter the digit for random number:4
Output − The random numbers are: 6383, 14846, 8067, 51524, .........

Thuật toán

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.

Mã mẫu

#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 << ".........";
}

Đầu ra

Enter the digit random numbers you want: 4
The random numbers are: 6383, 14846, 8067, 51524, .........