【问题标题】:Loop for generating lottery numbers用于生成彩票号码的循环
【发布时间】:2018-04-29 07:37:37
【问题描述】:

我正在使用 R 并使用表达式 sort(sample(1:60,6,replace=FALSE)) 生成 1 到 60 之间的 6 个数字,无需替换...

我想使用 FOR 语句创建一个循环,允许使用上述逻辑生成 n 个不同的样本。

关于如何构建这个循环有什么建议吗?

【问题讨论】:

    标签: r loops random sample


    【解决方案1】:

    使用replicate:

    replicate(sort(sample(1:60, 6, replace = FALSE)), n = 1000)
    

    结果是一个大小为 6x1000 的矩阵,因此每一列都是一个样本。

    我猜你想进行随机抽取,以允许相同的样本。如果您确实想要独特的样品,我试了一下:

    lottery <- function(n) {
      S <- replicate(sort.int(sample(1:60, 6, repl = F)), n = n)
      while(d <- anyDuplicated(S, MARGIN = 2)) {
        S <- cbind(S[, -d], sort.int(sample(1:60, 6, repl = F)))
      }
      S
    }
    

    【讨论】:

    • 我明白了,但为什么你会有两张相同号码的彩票?
    • 事实证明,现实世界中也很少出现这种情况;)让我们看看 OP 有什么要澄清的。
    • 问题说“生成n个不同的样本”,所以@zx8754是对的
    • 这就是那里写的,并不总是与 OP 的意思相同。
    【解决方案2】:

    您可以使用rerun 函数返回一个包含您需要的结果的列表

    library(purrr)
    
    rerun(.n = 1000, sort(sample(1:60, 6, replace = FALSE))) %>%
      unique()
    

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 1970-01-01
      • 2022-11-16
      • 2015-01-14
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      相关资源
      最近更新 更多