贝努利-高斯分布的随机数

一、功能

产生贝努利-高斯分布的随机数。

二、方法简介

贝努利-高斯分布的随机变量\(x\)是贝努利分布的随机变量\(y\)与高斯分布的随机变量\(z\)的乘积,即\(x=y*x\)。因此,贝努利-高斯分布的随机数可视为:每当贝努利序列中有1出现时,打开高斯随机数发生器,并用其输出代替1。贝努利-高斯分布的均值为\(p\mu\),方差为\(p\),其中\(p\)是贝努利分布的参数,\(\mu\)是高斯分布的均值。

在地震勘探信号处理中,常用贝努利-高斯序列描述地下主要层状结构的反射作用。

产生贝努利-高斯分布随机变量\(x\)的具体算法如下:

  1. 产生贝努利分布的随机数\(y\),即\(y \sim BN(p)\)
  2. 产生高斯分布的随机数\(z\),即\(z \sim N(\mu,\sigma)\)
  3. 计算\(x=y*x\)

三、使用说明

是用C语言实现产生贝努利-高斯分布随机数的方法如下:

/************************************
    p       ---贝努利分布参数p
    mean    ---高斯分布的均值mu
    sigma   ---高斯分布的均方差sigma
    s       ---随机数种子
************************************/
#include "gauss.c"

double bg(double p, double mean, double sigma, long int *s)
{
    double u;
    double x;
    u = uniform(0.0, 1.0, s);
    if(u < p)
        x = gauss(mean, sigma, s);
    else
        x = 0.0
    return(x);
}

gauss.c文件参见正态分布的随机数

猜你喜欢

转载自www.cnblogs.com/liam-ji/p/11678472.html