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;
}

(0)

相关推荐

  • C++实现迷宫算法实例解析

    本文以实例形式描述了C++实现迷宫算法.本例中的迷宫是一个矩形区域,它有一个入口和一个出口.在迷宫的内部包含不能穿越的墙或障碍.障碍物沿着行和列放置,它们与迷宫的矩形边界平行.迷宫的入口在左上角,出口在右下角 本实例迷宫算法的功能主要有: 1.自动生成10*10迷宫图 2.判断是否有迷宫出口,并且画出路线图 具体实现代码如下: # include <iostream> # include <list> # include <sys/timeb.h> # include

  • C++实现随机生成迷宫地牢

    可以用这个地图核心做成一个无限迷宫类的游戏 main.cpp // Author: FreeKnight 2014-09-02 #include "stdafx.h" #include <iostream> #include <string> #include <random> #include <cassert> /* 简单逻辑流程描述: 将整个地图填满土 在地图中间挖一个房间出来 选中某一房间(如果有多个的话)的墙壁 确定要修建某种新

  • C语言/C++中如何产生随机数

    C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,和time()函数. 需要说明的是,iostream头文件中就有srand函数的定义,不需要再额外引入stdlib.h;而使用time()函数需要引入ctime头文件. 使用rand()函数获取一个随机数如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX定义在stdlib.h, 其值为2147483647. 例子

  • C++产生随机数的实现代码

    C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C++里没有自带的random(int number)函数. (1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间.RAND_MAX值至少为32767.例如: 复制代码 代码如下: #include<stdio.h>#include <iostream> 复制代码 代码如下: int _tmain(int argc,

  • C/C++产生指定范围和不定范围随机数的实例代码

    一. 不指定范围产生随机数用到函数rand(),函数原型为int rand(),无参数.此时会产生一个介于0~RAND_MAX间的整数.RAND_MAX的大小可以查看,在include文件夹(linux在usr目录.windows在安装目录)的stdlib.h可以看到,linux下其值为2147483647(),其值与具体系统有关.参考代码: 复制代码 代码如下: #include<stdio.h>#include<stdlib.h> int main(){        int

  • 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 ) {    

  • R语言实现随机森林的方法示例

    目录 随机森林算法介绍 算法介绍: 决策树生长步骤: 投票过程: 基本思想: 随机森林的优点: 缺点 R语言实现 随机森林模型搭建 1:randomForest()函数用于构建随机森林模型 2:importance()函数用于计算模型变量的重要性 3:MDSplot()函数用于实现随机森林的可视化 4:rfImpute()函数可为存在缺失值的数据集进行插补(随机森林法),得到最优的样本拟合值 5:treesize()函数用于计算随机森林中每棵树的节点个数 随机森林算法介绍 算法介绍: 简单的说,

  • 机器学习Erdos Renyi随机图生成方法及特性

    目录 1 随机图生成简介 1.1Gnp和Gnm 1.2 生成方法 1.3 两种方法比较 2 Gnp随机图 2.1 只用n和p够吗? 2.2 Gnp的图属性 2.3真实网络和Gnp的对比 3 代码库 参考 1 随机图生成简介 1.1Gnp和Gnm 1.2 生成方法 1.3 两种方法比较 2 Gnp随机图 2.1 只用n和p够吗? n和p并不能完全决定一个图.我们发现即使给定n和p,图也有许多实现形式.如当n=10,p=1/6时,就可能产生如下的图: 2.2 Gnp的图属性 二项分布的离散分布图像如

  • Python生成不重复随机值的方法

    本文实例讲述了Python生成不重复随机值的方法.分享给大家供大家参考.具体分析如下: 这里从一列表中,生成不重复的随机值 算法实现如下: import random total = 100 li = [i for i in range(total)] res = [] num = 20 for i in range(num): t = random.randint(i,total-1) res.append(li[t]) li[t], li[i] = li[i], li[t] print re

  • Python生成随机数组的方法小结

    本文实例讲述了Python生成随机数组的方法.分享给大家供大家参考,具体如下: 研究排序问题的时候常常需要生成随机数组来验证自己排序算法的正确性和性能,今天把Python生成随机数组的方法稍作总结,以备以后查看使用. 一.使用random模块生成随机数组 python的random模块中有一些生成随机数字的方法,例如random.randint, random.random, random.uniform, random.randrange,这些函数大同小异,均是在返回指定范围内的一个整数或浮点

  • JavaScript生成随机字符串的方法

    本文实例讲述了JavaScript生成随机字符串的方法.分享给大家供大家参考.具体分析如下: 这里使用JavaScript生成一个随机字符串,可以指定字符串的长度. 复制代码 代码如下: function RandomString(length) {     var str = '';     for ( ; str.length < length; str += Math.random().toString(36).substr(2) );     return str.substr(0, l

  • JavaScript数组对象实现增加一个返回随机元素的方法

    本文实例讲述了JavaScript数组对象实现增加一个返回随机元素的方法.分享给大家供大家参考.具体如下: 核心特性: 概率随机.顺序随机.随机冒泡 本方法 来自个人手写 JavaScript 的实践,只涉及 JavaScript 1.5(ECMAscript 3 国际标准)语言本身,在所有 JS 引擎实现中通用~ 为Array对象新增random方法: (function () { function Random_SN(iArray) { return Math.floor(Math.rand

  • PHP生成各种随机验证码的方法总结【附demo源码】

    本文实例总结了PHP生成各种随机验证码的方法.分享给大家供大家参考,具体如下: 验证码在WEB应用中非常重要,通常用来防止用户恶意提交表单,如恶意注册和登录.论坛恶意灌水等.本文将通过实例讲解使用PHP生成各种常见的验证码包括数字验证码.数字+字母验证码.中文验证码.算术验证码等等以及其Ajax验证过程. 点击此处本站下载示例源码. PHP生成验证码图片 PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中.PHP生成验证码的大致流程有: 1.产生

  • php数组随机排序实现方法

    本文实例讲述了php数组随机排序实现方法.分享给大家供大家参考.具体实现方法如下: <?php $array = array('A','2','3','4','5','6','7','8','9','10','J','Q','K'); shuffle($array); //随机排序数组 print_r($array); //输出数组 ?> 运行结果如下: Array ( [0] => Q [1] => 3 [2] => 5 [3] => 2 [4] => 10 [

  • PHP函数shuffle()取数组若干个随机元素的方法分析

    本文实例讲述了PHP函数shuffle()取数组若干个随机元素的方法.分享给大家供大家参考,具体如下: 有时候我们需要取数组中若干个随机元素(比如做随机推荐功能),那么PHP要如何实现呢?一个比较简单的解决方法是用PHP自带的shuffle()函数.下面举一个简单的例子: $data[] = array( "name" => "我们", "rank" => "40" ); $data[] = array( &quo

随机推荐