概述
一般有两种算法:
算法一产生12个(0,1)平均分布的随机函数,用大数定理可以模拟出正态分布。
算法二用到了数学中的雅可比变换,直接生成正态分布,但此算法在计算很大规模的数时 会出现溢出错误。
附加代码:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> #include < math.h >
#include < stdio.h >
#include < conio.h >
#include < stdlib.h >
#include < time.h >
#define M_PI 3.14159265358979323846
double _random( void )
{
int a;
double r;
a=rand()%32767;
r=(a+0.00)/32767.00;
return r;
}
double _sta( double mu, double sigma)
{
int i;
double r,sum=0.0;
if(sigma<=0.0) { printf("Sigma<=0.0 in _sta!"); exit(1); }
for(i=1;i<=12;i++)
sum = sum + _random();
r=(sum-6.00)*sigma+mu;
return r;
}
double _sta2( double mu, double sigma)
{
double r1,r2;
r1=_random();
r2=_random();
return sqrt(-2*log(r1))*cos(2*M_PI*r2)*sigma+mu ;
}
int main()
{
int i;
double mu,sigma;
srand( (unsigned)time( NULL ) );
mu=0.0;
sigma=1.0;
printf("Algorithm 1:n");
for(i=0;i<10;i++)
printf("%lft",_sta(mu,sigma));
printf("Algorithm 2:n");
for(i=0;i<10;i++)
printf("%lft",_sta2(mu,sigma));
return 0;
}
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> #include < math.h >
#include < stdio.h >
#include < conio.h >
#include < stdlib.h >
#include < time.h >
#define M_PI 3.14159265358979323846
double _random( void )
{
int a;
double r;
a=rand()%32767;
r=(a+0.00)/32767.00;
return r;
}
double _sta( double mu, double sigma)
{
int i;
double r,sum=0.0;
if(sigma<=0.0) { printf("Sigma<=0.0 in _sta!"); exit(1); }
for(i=1;i<=12;i++)
sum = sum + _random();
r=(sum-6.00)*sigma+mu;
return r;
}
double _sta2( double mu, double sigma)
{
double r1,r2;
r1=_random();
r2=_random();
return sqrt(-2*log(r1))*cos(2*M_PI*r2)*sigma+mu ;
}
int main()
{
int i;
double mu,sigma;
srand( (unsigned)time( NULL ) );
mu=0.0;
sigma=1.0;
printf("Algorithm 1:n");
for(i=0;i<10;i++)
printf("%lft",_sta(mu,sigma));
printf("Algorithm 2:n");
for(i=0;i<10;i++)
printf("%lft",_sta2(mu,sigma));
return 0;
}
最后
以上就是害羞发卡为你收集整理的产生满足正态分布的随机数的全部内容,希望文章能够帮你解决产生满足正态分布的随机数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复