r - R中runif和sample的区别?

标签 r random-sample

在他们使用的概率分布方面?我知道 runif 给出小数而 sample 给出整数,但我感兴趣的是 sample 是否也使用“均匀概率分布”?

最佳答案

考虑以下代码和输出:

> set.seed(1)
> round(runif(10,1,100))
 [1] 27 38 58 91 21 90 95 66 63  7
> set.seed(1)
> sample(1:100, 10, replace=TRUE)
 [1] 27 38 58 91 21 90 95 67 63  7

这强烈表明当被要求做同样的事情时,这两个函数给出了几乎相同的输出(尽管有趣的是 round 给出了相同的输出,而不是 floorceiling )。主要区别在于默认值,如果您不更改这些默认值,那么两者都会给出称为统一的东西(尽管 sample 将被视为离散统一,并且默认情况下无需替换)。

编辑

更正确的比较是:
> ceiling(runif(10,0,100))
 [1] 27 38 58 91 21 90 95 67 63  7

而不是使用 round .

我们甚至可以更上一层楼:
> set.seed(1)
> tmp1 <- sample(1:100, 1000, replace=TRUE)
> set.seed(1)
> tmp2 <- ceiling(runif(1000,0,100))
> all.equal(tmp1,tmp2)
[1] TRUE

当然如果probs论据 sample使用(并非所有值都相等),那么它将不再是统一的。

关于r - R中runif和sample的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26978281/

相关文章:

r - 比较向量值

haskell - Random Monad 在replicatM 迭代之间是独立的吗?

lua - 你如何在 Lua 中进行 Fisher-Yates shuffle

r - 如何从电子邮件地址中提取 "domain"

从 data.table 中删除只有 NA 的行

r - 如何添加前导零?

r - 使设置随机种子的函数独立

r - ggplot2:添加用于 facet_grid 的变量名称

r - 希望在 R 中的多列上转置数据框

将数据帧随机抽样到R中的3个组中