伪随机数生成

R 中的抽样

Richie Cotton

Data Evangelist at DataCamp

"随机"是什么意思?

未经方法或有意识决定而形容词性地制造、进行、发生或选择。

  • 牛津词典
R 中的抽样

真随机数

  • 来自物理过程,如抛硬币。
  • Hotbits 使用放射性衰变。
  • RANDOM.ORG 使用大气噪声。
    • 可通过 R 的 random 包获取。
  • 真随机成本高。
1 https://www.fourmilab.ch/hotbits 2 https://www.random.org
R 中的抽样

伪随机数生成

  • 下一个"随机"数由上一个"随机"数计算。
  • 第一个"随机"数由一个种子计算。
  • 如果用同一种子开始,后续随机数都相同。
seed <- 1
calc_next_random(seed)
3
calc_next_random(3)
2
calc_next_random(2)
6
R 中的抽样

随机数生成函数

function distribution function distribution function distribution
rbeta Beta 分布 rgeom 几何分布 rsignrank Wilcoxon 符号秩
rbinom 二项分布 rhyper 超几何分布 rt t 分布
rcauchy 柯西分布 rlnorm 对数正态分布 runif 均匀分布
rchisq 卡方分布 rlogis 逻辑斯谛分布 rweibull 威布尔分布
rexp 指数分布 rnbinom 负二项分布 rwilcox Wilcoxon 秩和
rf F 分布 rnorm 正态分布
rgamma Gamma 分布 rpois 泊松分布
R 中的抽样

可视化随机数

rbeta(5000, shape1 = 2, shape2 = 2)
[1] 0.2788 0.7495 0.6485 0.6665 0.6546 0.1575
...

[4996] 0.84719 0.35177 0.92796 0.67603 0.53960
randoms <- data.frame(
  beta = rbeta(5000, shape1 = 2, shape2 = 2)
)
ggplot(randoms, aes(beta)) +
  geom_histogram(binwidth = 0.1)

hist-beta.png

R 中的抽样

随机数的种子

set.seed(20000229)
rnorm(5)
-1.6538 -0.4028 -0.1654 -0.0734  0.5171
rnorm(5)
1.908  0.379 -1.499  1.625  0.693
set.seed(20000229)
rnorm(5)
-1.6538 -0.4028 -0.1654 -0.0734  0.5171
rnorm(5)
1.908  0.379 -1.499  1.625  0.693
R 中的抽样

使用不同的种子

set.seed(20000229)
rnorm(5)
-1.6538 -0.4028 -0.1654 -0.0734  0.5171
rnorm(5)
1.908  0.379 -1.499  1.625  0.693
set.seed(20041004)
rnorm(5)
-0.6547 -0.7854 -0.0152  0.1514  0.5285
rnorm(5)
0.748  0.974  0.174 -0.781 -0.930
R 中的抽样

Vamos praticar!

R 中的抽样

Preparing Video For Download...