[c++] C++를 사용한 통계 분석
C++는 고성능 및 효율적인 언어로, 대규모 데이터 집합에 대한 통계 분석에 적합한 언어입니다. C++를 사용하여 간단한 통계 분석을 하는 방법을 살펴보겠습니다.
랜덤 숫자 생성
랜덤 숫자를 생성하기 위해 C++의 <random>
헤더를 사용합니다. 다음은 0부터 1까지의 실수 값을 생성하는 예제 코드입니다.
#include <iostream>
#include <random>
int main() {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<> dis(0.0, 1.0);
for (int i = 0; i < 10; ++i) {
std::cout << dis(gen) << std::endl;
}
return 0;
}
평균과 표준 편차 계산
평균과 표준 편차를 계산하기 위해 C++의 <vector>
와 <numeric>
헤더를 사용할 수 있습니다. 다음은 벡터에서 평균과 표준 편차를 계산하는 예제 코드입니다.
#include <iostream>
#include <vector>
#include <numeric>
#include <cmath>
int main() {
std::vector<double> data = {1.2, 2.3, 3.4, 4.5, 5.6};
double mean = std::accumulate(data.begin(), data.end(), 0.0) / data.size();
double sum_sq = std::inner_product(data.begin(), data.end(), data.begin(), 0.0);
double std_dev = std::sqrt(sum_sq / data.size() - mean * mean);
std::cout << "Mean: " << mean << std::endl;
std::cout << "Standard Deviation: " << std_dev << std::endl;
return 0;
}
확률 분포 및 통계 테스트
C++의 <statistic>
헤더를 사용하여 확률 분포 및 통계 테스트를 수행할 수 있습니다. 예를 들어 정규 분포의 누적 분포 함수 값을 계산하는 코드는 다음과 같습니다.
#include <iostream>
#include <cmath>
#include <random>
#include <cassert>
#include <iomanip>
#include <chrono>
#include <random>
#include <fstream>
#include <sstream>
int main() {
std::normal_distribution<> normal(5.0, 2.0);
std::mt19937 gen;
int num_samples = 1000;
std::vector<int> histogram(10);
for(int n = 0; n < num_samples; ++n) {
double sample = normal(gen);
if(sample >= 0 && sample < 10) {
++histogram[sample];
}
}
std::cout<<std::fixed<<std::setprecision(1);
for(int i = 0; i < histogram.size(); ++i) {
std::cout << i << '-' << (i + 1) << ' ' << '|' << std::string(histogram[i], '*') << '\n';<<
}
return 0;
}
C++를 사용하여 통계 분석을 하기 위해 다양한 라이브러리와 헤더를 활용할 수 있습니다. 개별적인 분석 요구 사항에 따라 적절한 라이브러리를 선택하여 활용할 수 있습니다.
위 예시들은 C++를 이용하여 통계 분석을 수행하는 기본적인 방법에 대해 안내하였습니다. 더 많은 고급 기능이나 특정 분석을 위해서는 각 분야별 라이브러리를 참고하는 것이 좋습니다.