Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ สร้างตัวเลขสุ่มด้วยวิธี Middle Square Method


วิธี Middle Square Method

วิธี Middle Square เป็นหนึ่งในวิธีที่ง่ายที่สุดในการสร้างตัวเลขสุ่ม วิธีนี้จะเริ่มสร้างตัวเลขเดียวกันซ้ำๆ หรือวนกลับไปที่ตัวเลขก่อนหน้าในลำดับและวนวนไปเรื่อยๆ สำหรับตัวสร้างตัวเลขสุ่ม n หลัก ช่วงเวลา (period) จะไม่ยาวกว่า n หากหลักกลาง n หลักเป็นศูนย์ทั้งหมด ตัวสร้างจะแสดงผลศูนย์ตลอดไป แม้ว่าการวิ่งของศูนย์จะตรวจจับได้ง่าย แต่เกิดขึ้นบ่อยเกินไปจนวิธีนี้ไม่คุ้มค่าสำหรับการใช้งานจริง

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

อัลกอริทึม

เริ่มต้น middleSquareNumber(number, digit)
  ประกาศอาร์เรย์และกำหนด next_number = 0
  ยกกำลังสองของ number และกำหนดให้ตัวแปร sqn
  หาร digit ด้วย 2 และกำหนดให้ตัวแปร t
  หาร sqn ด้วย a[t] และเก็บไว้ใน sqn
  For i = 0 ถึง digit
    next_number = next_number + (sqn mod (a[t])) * (a[i])
    sqn = sqn / 10
  Done
  คืนค่า next number
สิ้นสุด

โค้ดตัวอย่าง

#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, .........