【问题标题】:Random sets with three random numbers in it (sampling random points in a cube)包含三个随机数的随机集(在立方体中采样随机点)
【发布时间】:2018-12-14 00:10:57
【问题描述】:

立方体内的每个点都有三个值(X、Y 和 Z 轴)。 R 中有内置函数,与生成单个随机数(每个观察一个数)的集合有关,例如 runif()sample()rnorm()set.seed() 等。类似的逻辑,数字是在一个轴上生成的,具有这些功能。

我的问题是:

  • 是否有任何函数可以生成其中包含三个随机数的随机集(或一般化的、每次观察有多个随机数的随机集)?
  • 如果前者的答案是否定的,应该采取什么方法?

【问题讨论】:

  • 就不能独立生成三个随机数吗?我假设这些点将均匀分布在立方体内。 list(x=runif(10), y=runif(10), z=runif(10))
  • @MrFlick,是的,一开始就是这么想的!但我猜@Julius Vainora 必须直截了当且优雅的解决方案!

标签: r random


【解决方案1】:

考虑到多维数据集的情况,runif 可以非常灵活地实现所有这些。特别是,我们可以指定要生成的点数,并且对于每个轴,我们还可以指定不同的范围。例如,

lower <- c(0, 10, 20)
upper <- c(1, 11, 21)
n <- 5
matrix(runif(n * 3, lower, upper), ncol = 3, byrow = TRUE)
#            [,1]     [,2]     [,3]
# [1,] 0.03372777 10.99940 20.03487
# [2,] 0.33839128 10.91506 20.61724
# [3,] 0.28628535 10.73780 20.83405
# [4,] 0.31427078 10.49257 20.69737
# [5,] 0.64146235 10.64392 20.97785

rnormrbeta 等也是如此。

换个角度考虑,您想从 多变量 分布中进行抽样,其中我们甚至可能有一些依赖性。为此还有一些功能,例如MASS 包中的?mvrnormMCMCpack 中的?rdirichlet。但是,当处理均匀分布在立方体中的点时,遵循上述方法是标准的,如果需要,您可以为具有独立分量的多元均匀分布定义相应的函数。

【讨论】:

  • 感谢Julius Vainora,您的回答清晰而有见地:) 没想到会这么容易!我爱R
猜你喜欢
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 2019-10-02
  • 2012-01-06
  • 1970-01-01
相关资源
最近更新 更多