如何在数据帧中沿值的一列生成随机均匀分布而不必对所述列中的每个值重复?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在数据帧中沿值的一列生成随机均匀分布而不必对所述列中的每个值重复?相关的知识,希望对你有一定的参考价值。

我需要使用runif命令基于均匀分布创建生成随机变量。我有一列最大值和最小值将基于的值。我想知道是否有一种方法可以在列中向下应用runif,而不必为值列中的每个值重复该过程?没有其他人可以使用。我们正在使用rnormrunif等,因此不允许其他统计信息。

例如:

set.seed(1234)
values <- (30, 45, 80, 90, 80)
var_1 <- runif(5, 30*(.5), 30*(1.25))
var_2 <- runif(5, 45*(.5), 45*(1.25))
var_3 <- runif(5, 80*(.5), 80*(1.25))
var_4 <- runif(5, 90*(.5), 90*(1.25))
var_5 <- runif(5, 80*(.5), 80*(1.25))

这基本上是我必须要做的,但它是一个比五个观察值还大的数据帧。我还必须生成比5多得多的随机数。我希望有一种方法可以加快该过程,因此我不需要为数据报中的每一行重复var_3 <- runif部分。如果有帮助,我可以将数据框的列转换为具有单列和多行的矩阵。最终,我将从这些随机生成的数字中采样以执行蒙特卡洛模拟。

我假设某些应用程序功能可以工作,但是我仍然不确定应用程序家族的工作原理。我调查了一些已经发布的答案,但是答案有点过头了,我无法改变它们来帮助我,就像我最初以为的那样。

答案

喜欢这个:

sapply(values, function(x) runif(5, x*(.5), x*(1.25)))

以上是关于如何在数据帧中沿值的一列生成随机均匀分布而不必对所述列中的每个值重复?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python生成均匀分布在以(0,0)为中心的40 * 40矩形区域上的随机点?

如何生成整数的随机正态分布

证明一个随机生成的数是均匀分布的

以均匀随机分布生成任意斜率随机线性分布

在整个范围内均匀生成随机数

GWT随机生成数据区域传播