循环用于生成彩票号码

时间:2017-11-15 22:15:19

标签: r loops random sample

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

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

有关如何构建此循环的任何建议吗?

2 个答案:

答案 0 :(得分:2)

使用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
}

答案 1 :(得分:1)

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

library(purrr)

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