【问题标题】:R - Drawing a random ordered sampleR - 绘制随机有序样本
【发布时间】:2015-12-11 10:54:56
【问题描述】:

在 R 中,我目前有以下代码:

    sample(1:15,sample(1:15,1))

这会以随机顺序绘制随机大小的值。但是,对于我的应用程序,顺序必须保持不变。

我不能简单地在每次绘制后对值进行排序,因为这在计算上效率低下。对于我的应用程序,我想从有序值的样本中提取,这将大大减少样本量,从而减少计算时间。

一些例子:

    > 7 9 13 14
    > 1 5 6
    > 3 4 8 10 11 14 15
    > 2
    > 2 4 6 8 9

编辑:抽奖中的每个值也必须是唯一的。

【问题讨论】:

  • 您在寻找sort 吗?
  • 随机有序样本似乎是一个难以创建的概念,因为输出的元素数量很难标准化。例如对于 1:15,如果第一次抽签(随机过程)是 15,会发生什么?该过程应该停止,因此很难指定n。也许这会有所帮助:seq(1, 15, sample(1:15, 1))
  • seq(sample(1:15,1), 15, sample(1:15, 1)) 谢谢莱赞德

标签: r random-sample


【解决方案1】:

您可以通过逐步浏览列表来解决此问题,并在每一步都考虑在抽样时选择此值的概率有多大。这正是这个函数的作用

### Function that will select N values and preserve the order
mySample <- function(values,N){

        size <- length(values)

        values[sapply(1:size, function(i){
                    select <- as.logical(rbinom(1,1,N/(size+1-i)))
                    if(select) N <<- N - 1
                    select
        })]

}

【讨论】:

  • mySample(1:15,sample(1:15,1)) 谢谢 nist
猜你喜欢
  • 2013-12-02
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多