matlab中表示拉普拉斯分布_拉普拉斯分布的随机数[通俗易懂]

matlab中表示拉普拉斯分布_拉普拉斯分布的随机数[通俗易懂]一、功能产生拉普拉斯分布的随机数。二、方法简介1、产生随机变量的组合法将分布函数\(F(x)\)分解为若干个较为简单的子分布函数的线性组合\[F(x)=\sum_{i=1}^{K}p_{i}F_{i}(x)\]其中$p_{i}>0\(\foralli)$,且$\sum_{i=1}^{K}p_{i}=1$,\(F(x)\)是分布函数。定理若随机变量\(\xi\sim…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、功能

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

二、方法简介

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

将分布函数\(F(x)\)分解为若干个较为简单的子分布函数的线性组合

\[F(x)=\sum_{i=1}^{K}p_{i}F_{i}(x)

\]

其中 $ p_{i}> 0 \ (\forall i) $ ,且 $ \sum_{i=1}^{K}p_{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}^{K}p_{i}F_{i}(x)\)

证明\(z\)的分布函数为

\[P(z \leqslant t) = P((z \leqslant t) \cap \bigcup_{i=1}^{K}( \xi = i)) \\

= \sum_{i=1}^{K}P(z \leqslant t, \xi =i) \\

= \sum_{i=1}^{K}P(\xi = i)P(z \leqslant t \mid \xi =i) \\

= \sum_{i=1}^{K}p_{i}F_{i}(t)=F(t)

\]

定理证毕。

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

产生一个正随机数\(\xi\),使得\(P(\xi = i) = p_{i} \ (i = 1,2,…,K)\);

在\(\xi = i\)时,产生具有分布函数\(F_{i}(x)\)的随机变量\(x\)。

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

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

拉普拉斯分布的概率密度函数为

\[f(x) = \frac{1}{2\beta }e^{-\frac{\left | x \right |}{\beta }}

\]

Laplace分布的均值为0,方差为\(2\beta ^{2}\)。拉普拉斯分布也称为双指数分布。

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

产生均匀分布的随机数\(u_{1}\)和\(u_{2}\),即\(u_{1},u_{2} \sim U(0,1)\);

计算\(x = \left\{\begin{matrix}

-\beta \ ln(1 – u_{1}) & u_{1} \leqslant 0.5 \\

\beta \ ln(u_{2}) & u_{2} > 0.5

\end{matrix}\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文件参见均匀分布的随机数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219609.html原文链接:https://javaforall.net

(0)
上一篇 2025年7月5日 下午4:22
下一篇 2025年7月5日 下午5:01


相关推荐

  • vim退出编辑模式非esc_centos保存退出vim

    vim退出编辑模式非esc_centos保存退出vimlinux中退出vi编辑器,按下esc没反应的解决办法:1、在正常模式下按下q键盘;2、选择【a-z】或【0-9】中任意一个作为缓冲器的名字,准备开始录制宏;3、在非insert模式下输入q停止宏的录制;4、使用@和定义的缓冲器名字即可。linux中退出vi编辑器,按下esc没反应的解决办法:vimrecording功能介绍使用vim时无意间触碰到q键,左下角出现“recording”这个标识,…

    2026年4月14日
    3
  • OpenClaw 接入 Home Assistant:智能家居控制尝试

    OpenClaw 接入 Home Assistant:智能家居控制尝试

    2026年3月13日
    3
  • vue init webpack命令出错 vue-cli/node_modules/_rimraf@2.6.2@rimraf/rimraf.js:313

    vue init webpack命令出错 vue-cli/node_modules/_rimraf@2.6.2@rimraf/rimraf.js:313这是在 vue 开发中的一个比较低级的错误但是肯能会遇到 分享在这儿以便遇到后能够很好的解决先说明一下此问题出现的开发环境 本机是 mac nvm 管理的 node 使用 nodev8 0 0 全局安装了 vue cli npminstallvu cli g 错误如下 Users weiyongqiang nvm versions node v9 2 0 lib node module

    2025年8月8日
    5
  • axios实现跨域三种方法_跨域的解决方案

    axios实现跨域三种方法_跨域的解决方案Axios是不允许跨域访问的,别说跨域,跨端口都不行。例如某项目我本地vue前端frontEnd为`localhost:8888`,Java后台backEnd为`localhost:8889`。这个时候就有两个方案了:-修改`frontEnd`前端,支持跨域(通过代理的形式,当然这种是`伪跨域`,但是挺有用,前提是后端不限制即可)。-修改`backEnd`后台,支持跨域(同时限制可跨域名,不在本文讨论范围,且看过往处理方式)。

    2025年11月1日
    5
  • SAP Enhancement

    SAP Enhancement(一)什么是增强(Enhancement)?简单地说,增强就是ERP系统中标准程序的出口,在该出口中由用户根据企业实际需求编写客户化逻辑代码。增强是ERP系统设计时考虑到企业实际的流程有可能和系统默认标准流程不同,在标准流程框架下专门留的接口,每个接口对应一个客户化函数,这些出口函数有标准处理程序传入的参数和输出参数,用户可根据系统输入参数做条件编写适合本企业流程的逻辑,然后通过输

    2025年5月24日
    4
  • OleDbCommand使用参数应该注意的地方

    OleDbCommand使用参数应该注意的地方最近写程序用到OleDbCommand的Parameter写数据库,遇到很多问题:1、OLEDB.NETFramework数据提供程序和ODBC.NETFramework数据提供程序不支持用于将参数传递到SQL语句或存储过程的命名参数。在此情况下,必须使用问号(?)占位符,如以下示例所示。SELECT*FROMCustomersWHERECustomerID

    2022年5月19日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号