`

高斯分布随机数

 
阅读更多

这里有一个由Marsaglia首创Knuth推荐的方法:

#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++编程实现高斯分布随机数的产生涉及理解高斯分布的数学特性,使用`&lt;random&gt;`库中的`std::normal_distribution`类,并通过`std::random_device`和`std::mt19937`生成随机种子和随机数。生成的随机数可以...

    高斯分布随机数 C语言实现

    下面将详细介绍三种常见的生成高斯分布随机数的方法,并结合C语言实现的关键点进行讲解。 1. **Box-Muller变换法**: Box-Muller变换是一种通过两个均匀分布的随机数生成对称标准正态分布随机数的方法。首先,生成...

    基于FPGA的高斯分布随机数的生成.pdf

    高斯分布随机数生成在计算机科学和工程领域中具有广泛的应用,尤其是在需要模拟或分析随机过程的领域,如蒙特卡罗模拟、信号处理、图像处理、统计分析等。随机数生成算法的准确性和效率直接关系到模拟结果的可靠性和...

    高斯分布随机数C程序实现

    在本文中,我们将深入探讨如何使用C语言来实现高斯分布随机数的生成。高斯分布,也称为正态分布,是一种在统计学和许多科学领域广泛应用的概率分布。它的特点是有一个明显的峰值,即均值(μ),并围绕这个均值对称...

    基于FPGA的高斯分布随机数的生成_姚若河.zip_FPGA 随机数_FPGA产生随机数_fpga随机数_gaosi_高斯随机数

    本主题聚焦于一个特定的应用:基于FPGA的高斯分布随机数生成。高斯随机数,也称为正态分布随机数,广泛应用于各种科学模拟和数据分析中,例如无线通信、图像处理、金融建模等。下面将详细探讨这一技术的核心概念、...

    高斯分布随机数Verilog HDL程序设计.doc

    在本文件"高斯分布随机数Verilog HDL程序设计.doc"中,我们看到一个Verilog模块`gaussian_rng`,它设计了一个生成高斯分布随机数的电路。这个电路的目的是将12路32位均匀分布的随机数转换为高斯分布的随机数。下面将...

    一种产生广义高斯分布随机数的新算法(1)[汇编].pdf

    一种产生广义高斯分布随机数的新算法(1)[汇编].pdf

    高斯随机数产生原理及代码

    正态分布(高斯分布)是由两个参数定义的连续概率分布:均值(μ)和方差(σ^2)。其概率密度函数(PDF)为: \[f(x; \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}\] 其中...

    matlab高斯随机数

    matlab高斯随机数生成 需要大于20个字符,不支持HTML标签。

    C语言实现高斯分布的随机数抽取

    在主函数中,我们使用`srand`设置随机数种子,确保每次运行程序时生成不同的随机数序列,然后调用`gauss_random`函数打印10个高斯分布随机数。 需要注意的是,C语言的`rand()`函数生成的随机数质量并不高,对于精确...

    2_2P_Norm_Select.rar_2_2P_Norm_Select_舍选法_随机数 c++_高斯 随机数_高斯分布

    在本文中,我们将深入探讨如何使用C++编程语言来实现基于舍选法的高斯分布随机数生成。首先,我们要理解舍选法的基本原理,接着分析如何将其应用于高斯分布,最后,我们将简要介绍如何在VC(Visual C++)环境中进行...

    随机数 平均分布 高斯分布

    根据给定的文件信息,我们可以总结出以下关于随机数、平均分布与高斯分布的关键知识点: ### 随机数生成原理与应用 在计算机科学中,随机数生成是通过算法来模拟真正的随机性,虽然计算机生成的随机数通常被称为伪...

    高斯随机数FPGA

    该方法基于两个独立的均匀分布随机数来产生两个相互独立的高斯分布随机数。其基本步骤如下: 1. **生成均匀分布随机数**:首先,我们需要一个能生成[0,1)区间内的均匀分布随机数的机制。在FPGA中,这通常通过线性同...

    Gaussian_Gaussian.com_高斯分布_随机变量_源码

    此外,MATLAB还提供了其他函数,如`randn()`,用于生成均值为0,标准差为1的标准高斯分布随机数,可以通过简单的乘法和加法操作得到任意参数的高斯分布随机数。 "随机变量"标签表明我们关注的是这些数值在概率论中...

    uniformgauss.rar_BOX-MULLER_BOX_MULLER_高斯分布 matlab_高斯分布MATLAB_高斯

    例如,可以创建一个名为`uniform_to_gaussian.m`的函数,接受均匀分布的随机数作为输入,然后返回对应的高斯分布随机数。MATLAB的内置函数`randn`实际上就是基于某种类似的转换,能直接生成标准正态分布的随机数。 ...

    verilog产生高斯随机数

    Box-Muller变换是一种流行的方法,它能将两个独立的均匀分布随机数转换为两个独立的标准正态分布(即高斯分布)随机数。变换的基本步骤如下: 1. 假设我们有两个均匀分布的随机数U1和U2,它们均在[0, 1)区间内。 2....

    rand_butterhz9_高斯随机数_

    在实际应用中,"rand_butterhz9_"可能是一个函数或库,它内部实现了上述的一种或多种算法,为用户提供方便地生成高斯分布随机数的功能。例如,用户可以调用这个函数,传入期望的均值和标准差,然后得到一系列符合该...

    FPGA高斯随机数的实现

    Box-Muller算法是一种常用的将均匀分布随机数转换为高斯分布随机数的方法。为提高计算效率并减少硬件资源占用,文章介绍了如何利用“最值分析法”和“静态误差分析法”来优化操作数的位宽。这些方法可以帮助确定每个...

    高斯分布产生随机数及其估计

    该程序时高斯分布产生随机数并对其参数进行估计

    Univariate Multimodal Random Number Generator:从混合高斯分布中生成随机数。-matlab开发

    3个高斯分布生成的500个样本的例子如图所示,即通过以下命令: &gt;&gt; X = umgrn([-4 0 5],[1 2 1.5],500); &gt;&gt; 图; 历史(X); 有关更多详细信息,请参阅“帮助 umgrn”。 作者: 1. Avan Suinesiaputra (avan.sp@...

Global site tag (gtag.js) - Google Analytics