하나의 변수값이 주어졌을 때, C++ STL에서 제공하는 오차 함수(Error Function)를 사용하여 해당 변수의 확률을 구하는 방법을 알아보겠습니다. 이 함수는 C++의 cmath 헤더 파일에 포함되어 있어, 별도의 라이브러리 설치 없이 간단한 함수 호출만으로 정밀한 계산 결과를 얻을 수 있습니다.
오차 함수(Error Function)란?
수학에서 오차 함수는 가우스 오차 함수(Gauss Error Function)라고도 불리며, 기호로는 erf()로 표기합니다. 확률론, 통계학, 편미분방정식 등에서 발생 가능한 오차를 계산할 때 사용되는 특수 함수입니다. 수학적으로 다음과 같이 정의됩니다.

오차 함수와 밀접하게 관련된 함수로는 다음 두 가지가 있습니다.
- 상보 오차 함수(Complementary Error Function) — erfc x = 1 − erf x로 정의됩니다. 전체 확률에서 오차 함수 값을 뺀 나머지 부분을 나타냅니다.
- 허수 오차 함수(Imaginary Error Function) — erfi x = −i · erf(ix)로 정의되며, 여기서 i는 허수 단위입니다.
참고로 실수 범위에서 erf(x)의 값은 항상 −1부터 1 사이이며, x가 커질수록 1에 수렴합니다. 따라서 위 예시처럼 2.25와 같은 큰 입력값에서는 1에 매우 가까운 확률 값이 나오게 됩니다.
입력 및 출력 예시
예시 1
입력:
i = 2.25
출력:
erf(i) = 0.998537
예시 2
입력:
i = 1.25
출력:
erf(i) = 0.9229
C++ 코드 예제
예제 1 — i = 2.25인 경우
#include <iostream>
#include <cmath>
using namespace std;
double probab(double i){
double probab_1 = erf(i);
return probab_1;
}
int main (){
double i = 2.25;
cout<<"Probability is :"<<probab(i)<< endl;
return 0;
}
실행 결과:
Probability is : 0.998537
예제 2 — i = 1.25인 경우
#include <iostream>
#include <cmath>
using namespace std;
double probab(double i){
double probab_1 = erf(i);
return probab_1;
}
int main (){
double i = 1.25;
cout<<"Probability is :"<<probab(i)<< endl;
return 0;
}
실행 결과:
Probability is : 0.9229
코드 동작 원리
위 코드의 동작 과정은 다음과 같습니다.
probab()라는 사용자 정의 함수를 선언하고, 매개변수로 double 타입의 변수 i를 전달합니다.- 함수 내부에서
cmath헤더에 내장된erf()함수를 호출하여 주어진 값의 오차 함수 값을 계산합니다. - 계산된 결과를 반환하며,
main()함수에서 이를 화면에 출력합니다.
이처럼 erf() 함수를 활용하면 복잡한 적분 계산을 직접 구현하지 않고도 한 줄의 코드로 오차 함수 기반의 확률 값을 손쉽게 구할 수 있습니다. 통계 분석, 신호 처리, 머신러닝 등 다양한 분야에서 유용하게 활용할 수 있으니 꼭 기억해 두시기 바랍니다.