正态随机分布 C++实现

简介:

高斯分布也称为正态分布(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; }
复制代码

 本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/archive/2012/11/26/2789735.html,如需转载请自行联系原作者

相关文章
|
2月前
|
算法 程序员 C语言
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践
59 0
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
|
2月前
|
存储 Linux 程序员
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
85 0
|
2月前
|
资源调度 算法 C++
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(一)
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践
74 0
|
2月前
|
存储 程序员 编译器
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
33 0
|
4月前
|
算法 Python C++
C/C++每日一练(20230425) 成绩分布、汇总区间、矩阵置零
C/C++每日一练(20230425) 成绩分布、汇总区间、矩阵置零
38 0
C/C++每日一练(20230425) 成绩分布、汇总区间、矩阵置零
|
5月前
|
存储 程序员 编译器
C++内存分布
C++内存分布
23 0
|
7月前
|
编译器 Linux C语言
使用new/delete动态管理内存【C/C++内存分布】
使用new/delete动态管理内存【C/C++内存分布】
41 0
|
7月前
|
存储 C++
C++:内存分布和管理方式以及底层实现对比
C++:内存分布和管理方式以及底层实现对比
|
9月前
|
存储 C语言 C++
C++的内存分布及内存管理
C++的内存分布及内存管理
103 0
|
9月前
|
存储 Linux C语言
【C/C++内存分布】
【C/C++内存分布】
49 0