产生满足正态分布的随机数
2008-07-17 11:15
288 查看
一般有两种算法:
算法一产生12个(0,1)平均分布的随机函数,用大数定理可以模拟出正态分布。
算法二用到了数学中的雅可比变换,直接生成正态分布,但此算法在计算很大规模的数时 会出现溢出错误。
附加代码:
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define M_PI 3.14159265358979323846
double _random(void)
double _sta(double mu,double sigma)
double _sta2(double mu,double sigma)
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("%lf\t",_sta(mu,sigma));
printf("Algorithm 2:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta2(mu,sigma));
return 0;
}
算法一产生12个(0,1)平均分布的随机函数,用大数定理可以模拟出正态分布。
算法二用到了数学中的雅可比变换,直接生成正态分布,但此算法在计算很大规模的数时 会出现溢出错误。
附加代码:
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define M_PI 3.14159265358979323846
double _random(void)
double _sta(double mu,double sigma)
double _sta2(double mu,double sigma)
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("%lf\t",_sta(mu,sigma));
printf("Algorithm 2:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta2(mu,sigma));
return 0;
}
相关文章推荐
- C语言产生满足正态分布的随机数
- 产生满足正态分布的随机数
- C语言产生满足正态分布的随机数
- C语言产生满足正态分布的随机数
- C#产生正态分布、泊松分布、指数分布、负指数分布随机数(原创)
- matlab函数randn:产生正态分布的随机数或矩阵的函数
- 生成满足正态分布的随机数
- C++产生正态分布的随机数
- C语言产生标准正态分布或高斯分布随机数
- Python使用numpy产生正态分布随机数的向量或矩阵操作示例
- 如何产生正态分布的随机数?
- java随机数产生- 正态分布
- Fortran产生正态分布的随机数
- 【matlab】在vc6.0中调用matlab中的正态分布产生随机数
- Javascript 随机数函数 学习之二:产生服从正态分布随机数
- JAVA自定义算法产生正态分布随机数
- Matlab中产生正态分布随机数的函数normrnd-----用来产生高斯随机矩阵
- 正态分布随机数的产生
- 数字信号产生之正态分布的随机数
- 产生服从正态分布随机数(转载)