Quería escribir un programa para analizar automáticamente la distribución de datos, pero no pude encontrar la función de distribución de la distribución normal. ¡Accidentalmente revisé el curso de teoría de probabilidades y descubrí que hay una fórmula de cálculo aproximada en el apéndice! Muy feliz de registrar
#define pi (3.1415926535898)
#define a0 (0.33267)
#define a1 (0.4361836)
#define a2 (-0.1201676)
#define a3 (0.9372986)
prueba doble (doble x)
{
doble t = (1.0/(1.0+a0*fabs((x))));
return exp(-x*x/2.0) * t * (a1 + a2*t + a3*t*t) / sqrt(2.0*pi);
}
doble testfun(doble x)
{
si(x == 0)
{
devuelve 0,5;
}
si no (x > 0)
{
volver 1.0 - prueba(x)/raíz cuadrada(2*pi);
}
demás
{
volver prueba(x)/raíz cuadrada(2*pi);
}
}
#define pi (3.1415926535898)
#define a0 (0.33267)
#define a1 (0.4361836)
#define a2 (-0.1201676)
#define a3 (0.9372986)
prueba doble (doble x)
{
doble t = (1.0/(1.0+a0*fabs((x))));
return exp(-x*x/2.0) * t * (a1 + a2*t + a3*t*t) / sqrt(2.0*pi);
}
doble testfun(doble x)
{
si(x == 0)
{
devuelve 0,5;
}
si no (x > 0)
{
volver 1.0 - prueba(x)/raíz cuadrada(2*pi);
}
demás
{
volver prueba(x)/raíz cuadrada(2*pi);
}
}