C++实现正态随机分布的方法
2013-05-06 11:55
609 查看
高斯分布也称为正态分布(normal distribution)
常用的成熟的生成高斯分布随机数序列的方法由Marsaglia和Bray在1964年提出,C++版本如下:
#include <stdlib.h>
#include <math.h>
double gaussrand()
{
static double V1, V2, S;
static int phase = 0;
double X;
if ( phase == 0 ) {
do {
double U1 = (double)rand() / RAND_MAX;
double U2 = (double)rand() / RAND_MAX;
V1 = 2 * U1 - 1;
V2 = 2 * U2 - 1;
S = V1 * V1 + V2 * V2;
} while(S >= 1 || S == 0);
X = V1 * sqrt(-2 * log(S) / S);
} else
X = V2 * sqrt(-2 * log(S) / S);
phase = 1 - phase;
return X;
}
您可能感兴趣的文章:
相关文章推荐
- 正态随机分布 C++实现
- 直接选择排序的C++实现及随机数组的产生方法
- 冒泡排序的C++实现及随机数组的产生方法
- 直接插入排序的C++实现及随机数组的产生方法
- 快速排序算法的C++实现及随机数组的产生方法
- 解析Java实现随机验证码功能的方法详解
- 【JNI开发】C++调用java函数的实现方法
- 二叉树的各种建立方法及C++实现
- C++实现统计从1到n中1出现的次数(另外一种方法)
- 浮点性(float)转化为字符串类型 自定义实现和深入探讨C++内部实现方法
- C++接口与实现分离的2种方法
- (轉貼) C++接口与实现分离的2种方法 (C/C++)
- C# 调用C++写的dll的实现方法
- C++链表类的三种使用方法(学生信息管理系统的实现)
- 设计模式C++实现(5)——原型模式、模板方法模式
- 全排列算法的非递归实现与递归实现的方法(C++)
- C++实现字符串替换的两种方法
- 随机生成正太分布样本原理及python实现
- C++实现读取特定路径下文件夹及文件名的方法
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果