#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
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn
Đề chính thức thi THPT quốc gia năm 2020 tất cả các môn
Animal 4D - Ứng dụng học cùng con bằng công nghệ thực tế ảo
Tóm tắt lí thuyết Toán 12 phiên bản 2019 - File Word
Các chủ đề Tự học Toán 11
Bộ tài liệu hướng dẫn học Toán - tiếng Việt của trường Archimedes
1500 câu hỏi trắc nghiệm Toán 11 giải chi tiết
Các chủ đề Tự học Toán 12
20 đề thi ĐGNL có hướng dẫn giải chi tiết - File Word
Giải chi tiết đề tham khảo kì thi THPTQG 2018 - Môn Toán
Bộ tài liệu Chinh phục kì thi THPT Quốc gia 2017 - Quyển T