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ợi ích của việc chia sẻ tài liệu trên page là gì?

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