完全覆盖间隔的随机序列生成器

时间:2019-07-09 06:59:38

标签: random sequence

有人可以建议我使用随机(整数)数生成算法,以便给定间隔时,绝对保证可以覆盖所有给定间隔(即o缺少数字)吗?没有其他限制,例如没有数字的唯一性,没有关于分布的假设等等...

想法如下:

myRandom(1, 4)

输出如下序列:

1, 4, 3, 3, 1, 3, 1, 4, 1, 3, 2

1 个答案:

答案 0 :(得分:1)

您必须以某种方式告诉您的函数您想要多少个元素,例如n。如果知道(或者您有一些合理的默认值),则可以使用:

  • 根据您的输入值创建序列
  • 从序列中
  • 选择具有替换的 n - sequence_length
  • 将序列与所选值连接起来
  • 随机播放结果

使用4 * (to - from)作为n的默认值的R中的示例代码:

myRandom <- function(from, to, n = 4 * (to - from)) {
    values <- seq.int(from, to)
    selection <- sample(values, n - length(values), replace = TRUE)
    values <- c(values, selection)
    sample(values)
}

myRandom(1, 4)
#>  [1] 1 4 3 3 3 4 4 2 3 2 1 2

reprex package(v0.3.0)于2019-07-09创建

相关问题