#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
Tổng hợp 360 câu trắc nghiệm Giới hạn - Liên tục (có đáp án) - File word
440 câu trắc nghiệm Hình học 11 chương 3 có giải chi tiết - File word
Đề chính thức thi THPT quốc gia năm 2020 tất cả các môn
520 câu trắc nghiệm Đạo hàm có giải chi tiết
Bộ 100 đề ôn tập Toán 7 học kì 2
Animal 4D - Ứng dụng học cùng con bằng công nghệ thực tế ảo
120 câu trắc nghiệm chương 4 Đại số 10
Tóm tắt lí thuyết Toán 12 phiên bản 2019 - File Word
Trọn bộ câu hỏi trắc nghiệm Toán 11 học kì 2
Các chủ đề Tự học Toán 11