在他们使用的概率分布方面?我知道runif给出了小数,而样本给出了整数,但我感兴趣的是样本是否也使用"均匀概率分布"?
Gre*_*now 11
请考虑以下代码和输出:
> 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
Run Code Online (Sandbox Code Playgroud)
这强烈暗示当被要求做同样的事情时,2个函数给出几乎相同的输出(尽管有趣的是round它提供相同的输出而不是floor或ceiling).主要区别在于默认值,如果你不改变那些默认值,那么两者都会给出一个称为统一的东西(虽然它sample被认为是一个离散的统一,默认情况下没有替换).
编辑
更正确的比较是:
> ceiling(runif(10,0,100))
[1] 27 38 58 91 21 90 95 67 63 7
Run Code Online (Sandbox Code Playgroud)
而不是使用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
Run Code Online (Sandbox Code Playgroud)
当然,如果使用probs参数to sample(并非所有值都相等),那么它将不再是统一的.
sample 来自固定输入集的样本,如果长度为1的输入作为第一个参数传递,则返回整数输出.
另一方面,runif从实际值范围返回样本.
> sample(c(1,2,3), 1)
[1] 2
> runif(1, 1, 3)
[1] 1.448551
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7479 次 |
| 最近记录: |