如何生成并非所有数字都取0-9的5位随机整数?

时间:2018-09-26 16:19:45

标签: r random

我要生成n(样本大小)数量的5位随机整数,其具有以下要求:

  1. 第一个数字表示“组”,即1或2
  2. 第二个数字表示“版本”,即1或2
  3. 最后3位数字是001至999之间的随机整数。

我该怎么做?


更新

如何确保第一位数和第二位数中的数字1和2相等?我只想要n

2 个答案:

答案 0 :(得分:2)

sample.int(2, n, TRUE) * 1e+4 +
sample.int(2, n, TRUE) * 1e+3 +
sample.int(999, n, TRUE)

其中n是样本大小,例如100。

  

如何确保第一位数和第二位数中的数字1和2相等?我只想要n

my5digits <- function (n) {
  if (n %% 2) stop("n must be even!")
  x1 <- sample(rep_len(c(1, 2), n))
  x2 <- sample(x1)
  x1 * 1e+4 + x2 * 1e+3 + sample.int(999, n, TRUE)
  }

set.seed(0)
my5digits(10)
# [1] 11777 11934 21212 12652 22126 21267 22386 22014 12383 11869

答案 1 :(得分:0)

我们可以使用samplepaste0

set.seed(505)
d1.group <- sample(c(1,2), 100, replace = TRUE)  # first number denoting Group
d2.version <- sample(c(1,2), 100, replace = TRUE) # second number for version
d3.any <- sprintf("%03.0f", sample(sample(c(1,999), 100, replace = TRUE))) # last 3 ditigs
as.numeric(paste0(d1.group, d2.version, d3.any)) # put them altogether

  [1] 11001 22001 11999 12999 11999 22999 11999 11001 11001 11001 11001 11001 11001 12001 22999 22001 22999 21999 12999 21001
 [21] 12001 22001 11001 12999 12999 12001 11999 21001 22999 21001 22001 11001 22001 12999 22001 21001 21001 12999 12999 12001
 [41] 12001 22999 11999 11999 22999 11999 21001 12999 22001 21999 21001 11999 11999 12999 21999 22999 22001 22001 22999 11001
 [61] 11999 12001 22999 21999 11001 11999 11999 21999 22999 22999 11999 11999 21999 11001 12999 22001 11001 11999 21001 21999
 [81] 11001 11999 12001 11001 22001 22001 21001 12999 12001 21999 21999 21999 11999 22999 11999 21001 12999 22001 21001 11999