Как генерировать 5-значные случайные целые числа, где не все цифры принимают 0 - 9? - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу сгенерировать n (размер выборки) числа 5-значных случайных целых чисел со следующими требованиями:

  1. 1-я цифра обозначает «Группу», что равно 1 или 2
  2. 2-я цифра обозначает «версию», то есть либо 1, либо 2
  3. последние 3 цифры - случайные целые числа в диапазоне от 001 до 999.

Как можноЯ делаю это?


обновление

Как я могу обеспечить одинаковое количество 1 и 2 в 1-й цифре, а также во 2-йцифра?Я хочу даже n только.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Мы можем использовать sample и paste0

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
0 голосов
/ 26 сентября 2018
sample.int(2, n, TRUE) * 1e+4 +
sample.int(2, n, TRUE) * 1e+3 +
sample.int(999, n, TRUE)

, где n - размер выборки, скажем, 100.

Как я могу гарантировать, что равные числа 1 и 2 в 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
...