逆变换法生成随机数:

  • 一、概念解释
    • 1、PDF
    • 2、PMF
    • 3、CDF
  • 二、连续型情况举例
  • 三、离散型情况举例

一、概念解释

1、PDF

probability density function 概率密度函数,简称密度函数。连续型随机变量的概率密度函数是一个描述这个随机变量的输出值,在某个确定的取值点附近的可能性的函数

借陈希孺老师所著的《概率论与数理统计》中关于概率密度函数的释义以方便理解概念。

2、PMF

probability mass function 概率质量函数, 概率质量函数是离散随机变量在各特定取值上的概率(就是离散型随机变量的分布律)

例如,抛掷硬币,若为正面记X = 1,反面记x = 0,则概率质量函数为:

3、CDF

cumulative distribution function 累积分布函数 ,也叫分布函数,是概率密度函数的积分

常用积分表

二、连续型情况举例

步骤:
1、设U = 概率密度函数积分 = 分布函数
2、分布函数求逆,得到x = 式①
3、构造符合均匀分布的随机数 U = runif(num, start, stop)
4、随机数U代入step2中式①,即可得到对应随机数
5、验证生成的x是否符合预期: 绘制x的频数直方图,绘制总体密度函数曲线

利用逆变换法生成1000个服从fx(x)=3x2,0<x<1f_x(x) = 3x^2 ,0 < x < 1fx​(x)=3x2,0<x<1的随机数。

代码实现:

U = runif(1000,0,1)  # 生成1000个服从[0,1]均匀分布的随机数
x = U^(1/3)   # 式① 生成服从题目分布的随机数
hist(x, prob = TRUE)  # 绘制生成随机数x的频数直方图
xx = seq(0,1,0.1)
lines(xx ,3 * xx ^ 2)  # 绘制密度函数,与频数分布直方图的趋势作比较

部分结果展示:

验证结果展示:

练习:
利用逆变换法生成服从fx(x)=x−28,2<x<6f_x(x) = \frac{x-2}{8}, 2 < x < 6fx​(x)=8x−2​,2<x<6的5000个随机数。

代码实现:

U = runif(5000,0,1)  # 生成1000个服从[0,1]均匀分布的随机数
x = 4*sqrt(U)+2   # 式① 生成服从题目分布的随机数
hist(x, prob = TRUE)  # 绘制生成随机数x的频数直方图
xx = seq(2,6,0.1)
lines(xx ,(xx-2)/8)  # 绘制密度函数,与频数分布直方图的趋势作比较

三、离散型情况举例

离散型生成随机数的四种方法:
① R语言内置函数
② sample函数
③ 逆变换法
④ 接受拒绝法

步骤:
1、对照列联表写分布函数
2、分布函数求逆
3、构造符合均匀分布的随机数 U = runif(num, start, stop)
4、随机数U代入step2中式①,即可得到对应随机数
5、验证生成的x是否符合预期: 制表统计看频率

利用逆变换法生成1000个服从下列概率质量函数的随机数。

X 0 1 2 3 4
P 0.1 0.2 0.2 0.2 0.3


代码实现:

n = 1000
x = seq(0, 4, 1)
p = c(0.1, 0.2, 0.2, 0.2, 0.3)
FF = c(0,cumsum(p)); FF  #累加得到分布函数
y1 = integer(n)  # 逻辑向量
m = length(FF)
u = runif(n)  # 生成1000个服从[0,1]均匀分布的随机数
for(i in 1:m-1){  # u代入逆运算的结果ind = u>FF[i] & u<=FF[i+1];  # or = |   and = &y1[ind]=x[i];
}; y1
table(y1)/n   # 频数验证

部分结果展示:

验证结果展示:

R语言:逆变换法生成随机数相关推荐

  1. R语言处理数据——生成随机数

    生成随机数 #如下连续生成16组1:3的随机不重复整数(每次3个),存储至repl中: repl <- NULL for(x in 1:16) {repl <- c(repl, sampl ...

  2. matlab逆变换法产生随机数_信号处理——生成给定分布随机数

    作者:桂. 时间:2017-03-12  19:31:55 前言 本文是曲线拟合与分布拟合一文的插曲,进行分布拟合时,碰到一个问题是,如何指定分布的随机数呢?本文主要包括: 1)连续型随机数: 2)离 ...

  3. R语言使用:符号生成向量数据、使用pie函数可视化饼图、自定义设置饼图色彩为彩虹色、使用box函数在当前图上加个方框

    R语言使用:符号生成向量数据.使用pie函数可视化饼图.自定义设置饼图色彩为彩虹色.使用box函数在当前图上加个方框 目录 R语言使用:符号生成向量数据.使用pie函数可视化饼图.自定义设置饼图色彩为 ...

  4. R语言使用knitr生成机器学习模型全流程步骤示例:knitr与自动化结果报告、knitr常用参数

    R语言使用knitr生成机器学习模型全流程步骤示例:knitr与自动化结果报告.knitr常用参数 目录

  5. R语言主成分分析法笔记

    01.什么是主成分分析法 简要概括主成分分析法的作用:把能反映某种特征的很多指标汇总成一个指标. 举例而言,一家银行的流动性可以体现在它的现金资产占比和定期存款占比上-- 银行A的现金资产占比是0.1 ...

  6. R语言:作业六(逆变换法生成随机变量;线性同余发生器LCG的编写)

    1. 用逆变换法编写产生下述随机变量的程序: X 0 1 p 0.4 0.6 模拟10000次,并确定随机变量的值0的比例. f <- function(n){{x <- rep(0,n) ...

  7. 逆分布函数法生成随机数(以指数分布和双指数分布为例)

    前面在"C++均匀分布U(0,1)的随机数中"讲了如何在C++中生成均匀分布随机数,同时也提到了均匀分布的是其他随机数的生成基础,这里就来看看均匀分布在其他随机数生成中的重要作用吧 ...

  8. C语言详解生成随机数的过程,time函数、时间戳timer、rand函数和srand函数,附猜数字小游戏

    第十一篇:随机数详解 一.准备工作(预备知识) 1.1.生成伪随机数(函数rand) 1.2.伪随机数"变成"随机数(函数time) 1.3.生成确定范围随机数 二.练手随机数经典 ...

  9. 梅森旋转产生随机数c语言实现,C++生成随机数的实现代码

    C风格 C为随机数提供的工具是rand.srand和RAND_MAX,定义在中. srand为rand设置种子,如果不设置,相当于调用过srand(1).rand产生伪随机数,其范围为0到RAND_M ...

最新文章

  1. java中重载与重写的区别
  2. Linux nethack
  3. 误删Windows文件后恢复技巧
  4. 秀,用NBA球员数据学透K-Means聚类
  5. 二三星缩水软件手机版_还在抱怨三星手机不好用?用这些软件立马解决
  6. POJ-3154-Graveyard
  7. 搞不定这三大难题,根本学不会Python,别不信!
  8. mysql基本sql语句总结(一)
  9. 使用 Python SimpleHTTPServer 快速共享文件
  10. java nio 心跳包_请问Java中Socket的心跳包如何实现?
  11. 457.环形数组循环
  12. python计算器代码,Python实现两款计算器功能示例
  13. 春节假期,把“电影院”搬回家,泰捷WEBOX T1S 投影仪全面评测
  14. VSCode 使用 minify 手动压缩JS, CSS, HTML
  15. 【学习笔记】使用OpenSSL生成CA证书-配置Nginx代理服务器使用HTTPS协议
  16. PHP网站(Drupal7)响应过慢之“Wating(TTFB)时间过长”
  17. kernel启动流程-head.S的执行_3.preserve_boot_args
  18. 10分钟白嫖我的常用的在线工具网站清单
  19. mysql rand_mysql的rand函数
  20. cmd命令行远程连接 CentOS 服务器

热门文章

  1. 如何统计自己写的代码量
  2. vue——router更改路由地址,但是页面不能跳转
  3. 基于PHP服装购物网站的设计与实现
  4. CSS属性前的 -webkit, -moz
  5. HTTP基础知识(仅介绍涉及R语言爬虫部分)
  6. 凸包 初学 Andrew 和 Melkman (模板) 旋转卡(qia)壳(ke)
  7. 微信小程序JS 字符串string与arraybuffer的相互转换
  8. 安装Ubuntu的几十次坑的经验
  9. AcWing 4489. 最长子序列
  10. CAS单点登录-配置数据库认证方式