标准正态分布函数的c语言代码 谢啦

标准正态分布函数的c语言代码 谢啦,第1张

double gaussian(double u) //用Box_Muller算法产生高斯分布的随机数

{

double r,t,z,x

double s1,s2

s1=(1.0+rand())/册吵(RAND_MAX+1.0)

s2=(1.0+rand())/(RAND_MAX+1.0)

r=sqrt(-2*log(s2)/log(e))

t=2*pi*s1

z=r*cos(t)

x=u+z*N

return x

}

以前写的一个函数春搏,u是均值,N是方扒姿祥差

如何用茄闷matlab标准正态分布图?

这个问题可以通过下列方法来实现:

1、用mu=7.45来表示均值,用sigma=1来表示标准差

2、创建自定义的正态分布函数,即

func=@(x)1/(sqrt(2*pi)*sigma).*exp(-(x-mu).^2/(2*sigma))

3、确定x的变化范围,如

x=-5:0.1:20

4、计算对应于x的正态分布值,即

y=func(x)

5、使用plot函数绘制正态分布图,即

plot(x,y)

xlabel('x')ylabel('颤姿弯y(x)')

6、运册段行结果图

你看看计算基判慎公式是不是这样的?

还有精度要多少啊?

查表可知,

F(2.1) =0.9821

F(-0.3)=1-0.6179

F(2.1) - F(-0.3) = 0.6

源程序

#include<stdio.h>

#include<math.h>

double f(double x)

{

return exp(-x*x/2)

}

double F(double a,double b,double ep=1e-6)

{

double h,s1=0,s2=(b-a)*(f(a)+f(b))/2

int n,k

for(int n=1fabs(s1-s2)>epn*=2)

{

h=(b-a)/n

s1 = s2

s2 = 0

for(int k=0k<n++k)

{

s2 += 冲稿h*f(a+(k+0.5)*h)

}

s2 = 搏敬(s1+s2)/2

}

return s2*sqrt(1/(8*atan(1.0)))

}

int main()

{

double c,d

scanf("%lf",&c)

scanf("%lf",&d)

printf("%lf",F(c,d))

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12476863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存