Toán 10_Chương 5_Thống kê_Tạo đề tự động kèm đáp án

Thứ năm - 21/11/2024 17:01
BQT Toán học Bắc Trung Nam gửi tặng quý thầy cô chương trình C++ tạo đề bài tập kèm đáp án cho phần nội dung chương THỐNG KÊ của môn Toán lớp 10
Toán 10_Chương 5_Thống kê_Tạo đề tự động kèm đáp án
Để chạy code tự động này, quý thầy cô thực hiện theo các bước sau:
Bước 1. Copy đoạn mã chương trình C++ bên dưới
Bước 2. Mở link: https://onecompiler.com/cpp/42yrmuy4j và dán đoạn mã vừa copy vào
Bước 3. Bấm nút "RUN" màu đỏ ở góc trên bên phải của sổ.
Bước 4. Copy nội dung đề bài và đáp án vào file Word.
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>

using namespace std;

// Hàm tính giá trị trung bình
double mean(const vector<int>& data) {
    int sum = 0;
    for (int num : data) {
        sum += num;
    }
    return static_cast<double>(sum) / data.size();
}
int find_mode(const vector<int>& data) {
    // Tìm mốt bằng cách đếm số lần xuất hiện của mỗi giá trị
    int max_count = 0, mode = data[0];
    for (int i = 0; i < data.size(); ++i) {
        int count = 0;
        for (int j = 0; j < data.size(); ++j) {
            if (data[i] == data[j]) {
                count++;
            }
        }
        if (count > max_count) {
            max_count = count;
            mode = data[i];
        }
    }
    return mode;
}

int find_quartile(const vector<int>& data, double index) {
    // Tìm tứ phân vị
    int n = data.size();
    double pos = index * (n + 1);
    int pos_int = static_cast<int>(pos);
    if (pos_int == pos) {
        return data[pos_int - 1];
    } else {
        return (data[pos_int - 1] + data[pos_int]) / 2;
    }
}

// Hàm tính độ lệch chuẩn
double standard_deviation(const vector<int>& data, double mean) {
    double sum_squared_diff = 0.0;
    for (int num : data) {
        sum_squared_diff += pow(num - mean, 2);
    }
    return sqrt(sum_squared_diff / data.size());
}

// Hàm sinh số ngẫu nhiên theo phân phối gần giống với tập dữ liệu gốc
int generate_random_number(const vector<int>& data) {
    // Sử dụng random_device và mt19937 để tạo số ngẫu nhiên
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<> dis(data[0], data[data.size() - 1]);
    return dis(gen);
}

int main() {
    // Nhập dữ liệu (ví dụ: nhập từ bàn phím)
    vector<int> data = {110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120}; // Nhập đầy đủ dữ liệu

    // Tính toán các thông số thống kê
    double mean_value = mean(data);
    double std_dev = standard_deviation(data, mean_value);

    // Tạo 10 tập dữ liệu mới
    int sopttrendong = 1;
    for (int i = 0; i < 50; ++i) {
        cout << "Câu "<< i + 1 <<": Cho các số liệu thống kê tuổi thọ của 30 bóng đèn điện được thắp thử (đơn vị: giờ) ghi trong bảng sau:\n";
        vector<int> new_data;
        for (int j = 1; j < data.size()+20; ++j) {
            new_data.push_back(generate_random_number(data));
        }
        // In ra tập dữ liệu mới
        for (int num : new_data) {
            cout << num << " ";
            if (sopttrendong % 10 == 0 && sopttrendong %3!=0) {
              cout <<"\n";
            }
            sopttrendong++;
        }
        cout << endl;
        cout << "Tìm giá trị trung bình, mốt, tứ phân vị, phương sai và độ lêch chuẩn của bảng số liệu trên.\n";
        cout << "Đáp số:\n";
        cout << "Giá trị trung bình: " << mean(new_data) << "\n";
        cout << "Phương sai: " << standard_deviation(new_data,mean(new_data)) << "\n";
        cout << "Độ lệch chuẩn: " << sqrt(standard_deviation(new_data,mean(new_data))) << "\n";
        // Sắp xếp dữ liệu
        sort(new_data.begin(), new_data.end());

        // Tính các giá trị thống kê
        int mode = find_mode(new_data);
        double q1 = find_quartile(new_data, 0.25);
        double q2 = find_quartile(new_data, 0.5);
        double q3 = find_quartile(new_data, 0.75);
        cout << "Mốt: " << mode << endl;
        cout << "Tứ phân vị thứ nhất (Q1): " << q1 << endl;
        cout << "Tứ phân vị thứ hai (Q2): " << q2 << endl;
        cout << "Tứ phân vị thứ ba (Q3): " << q3 << endl;        
    }

    return 0;
}
 

Tác giả bài viết: Nguyễn Duy Chiến

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

Click để đánh giá bài viết

  Ý kiến bạn đọc

Thăm dò ý kiến

Làm sao bạn biết page Toán học Bắc Trung Nam?

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây