用C程序:均匀分布到高斯分布,编写(0,1)均匀分布到标准正态分布的程序

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 00:19:35

用C程序:均匀分布到高斯分布,编写(0,1)均匀分布到标准正态分布的程序
用C程序:均匀分布到高斯分布,编写(0,1)均匀分布到标准正态分布的程序

用C程序:均匀分布到高斯分布,编写(0,1)均匀分布到标准正态分布的程序
建立一个command1按钮
Private Sub Command1_Click()
Dim i,Sum
Dim a(1 To 200)
Sum = 0
For i = 1 To 200
Randomize
a(i) = Rnd()
Sum = Sum + a(i)
Next i
Print Sum
End Sub
然后想了下高斯分布应该b不简单的,就 主要参考了
--------------------------------------------------------------
这篇?:
就这个就可以了,不用改进法
正态分布的随机数发生器 in C#
主要参考《Numerical Recipes in C++ 2/e》p.292~p.294 和《Simulation Modeling and Analysis
3/e》p.465~p.466.
Box 和 Muller 在 1958 年给出了由均匀分布的随机变量生成正态分布的随机变量的算法.设 U1,U2 是区间 (0,1) 上均匀分布的随机变量,且相互独立.令
X1 = sqrt(-2*log(U1)) * cos(2*PI*U2);
X2 = sqrt(-2*log(U1)) * sin(2*PI*U2);
那么 X1,X2 服从 N(0,1) 分布,且相互独立.等于说我们用两个独立的 U(0,1) 随机数得到了两个独立的 N(0,1)随机数.
---------------------------------------------------------------
高数实在不行,只能理解到这个程度,下面的代码
Private Sub Command1_Click()
Dim u1(1 To 100) '定义u1
Dim u2(1 To 100)
Dim x1(1 To 100) '定义x1
Dim x2(1 To 100)
Dim i As Integer
Dim Sum
Sum = 0
Dim pi
pi = 3.1415926525 '定义Л
For i = 1 To 100
Randomize
u1(i) = Rnd() '生成u1
u2(i) = Rnd() '
x1(i) = Sqr(-2 * Log(u1(i))) * Cos(2 * pi * u2(i)) '计算x1
x2(i) = Sqr(-2 * Log(u1(i))) * Sin(2 * pi * u2(i)) '
Sum = Sum + x1(i) + x2(i) '计算x的所有的和
Next i
Print Sum '输入他们的和
End Sub