拉普拉斯分布的随机数

Posted liam-ji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拉普拉斯分布的随机数相关的知识,希望对你有一定的参考价值。

一、功能

产生拉普拉斯分布的随机数。

二、方法简介

1、产生随机变量的组合法

将分布函数\\(F(x)\\)分解为若干个较为简单的子分布函数的线性组合
\\[ F(x)=\\sum_i=1^Kp_iF_i(x) \\]
其中 $ p_i> 0 ?(\\forall i) $ ,且 $ \\sum_i=1^Kp_i=1 $ ,\\(F(x)\\)是分布函数。

定理 若随机变量\\(\\xi \\sim s\\)离散分布\\(\\left \\ p_i \\right \\\\),即\\(P(\\xi =i)=p_i\\),并且\\(z \\sim F_\\xi (x)\\),取\\(z=x\\),则\\(z \\sim F(x) = \\sum_i=1^Kp_iF_i(x)\\)

证明 \\(z\\)的分布函数为
\\[ P(z \\leqslant t) = P((z \\leqslant t) \\cap \\bigcup_i=1^K( \\xi = i)) \\= \\sum_i=1^KP(z \\leqslant t, \\xi =i) \\= \\sum_i=1^KP(\\xi = i)P(z \\leqslant t \\mid \\xi =i) \\= \\sum_i=1^Kp_iF_i(t)=F(t) \\]

定理证毕。

根据此定理,我们给出产生随机数的组合算法如下:

  1. 产生一个正随机数\\(\\xi\\),使得\\(P(\\xi = i) = p_i \\ (i = 1,2,...,K)\\)
  2. \\(\\xi = i\\)时,产生具有分布函数\\(F_i(x)\\)的随机变量\\(x\\)

该算法中首先以概率\\(p_i\\)选择子分布函数\\(F_i(x)\\),然后取\\(F_i(x)\\)的随机数作为\\(F(x)\\)的随机数。

2、产生拉普拉斯分布随机数的方法

拉普拉斯分布的概率密度函数为
\\[ f(x) = \\frac12\\beta e^-\\frac\\left | x \\right |\\beta \\]
Laplace分布的均值为0,方差为\\(2\\beta ^2\\)。拉普拉斯分布也称为双指数分布。

根据上述的组合算法,产生拉普拉斯分布随机数的方法为:

  1. 产生均匀分布的随机数\\(u_1\\)\\(u_2\\),即\\(u_1,u_2 \\sim U(0,1)\\)
  2. 计算\\(x = \\left\\\\beginmatrix -\\beta \\ ln(1 - u_1) & u_1 \\leqslant 0.5 \\\\ \\beta \\ ln(u_2) & u_2 > 0.5 \\endmatrix\\right.\\)

三、使用说明

使用C语言实现产生拉普拉斯分布随机数的方法:

#include "math.h"
#include "uniform.c"

double laplace(double beta, long int *s)

    u1 = uniform(0.0, 1.0, s);
    u2 = uniform(0.0, 1.0, s);
    if(u1 <= 0.5)
        x = -beta * log(1.0 - u2);
    else
        x = beta * log(u2);
    return(x);

uniform.c文件参见均匀分布的随机数

以上是关于拉普拉斯分布的随机数的主要内容,如果未能解决你的问题,请参考以下文章

服从的拉普拉斯分布的随机变量X的概率密度f(x)=Ae^(-x ),求系数A及分布函数F(x)

服从的拉普拉斯分布的随机变量X的概率密度f(x)=Ae^(-x ),求系数A及分布函数F(x)

数学概率随机变量X服从拉普拉斯分布,其概率密布为f(x)=(1/2)e^-x计算E(x),D(x)

什么是拉普拉斯概率

拉普拉斯分布是啥啊?

概率论与数理统计 Chapter3. 随机变量的数字特征