Генератор случайных последовательностей с полным охватом интервала - PullRequest
0 голосов
/ 09 июля 2019

Может ли кто-нибудь предложить мне алгоритм генерации случайных (целых) чисел, чтобы при заданном интервале абсолютно гарантированно охватывался весь заданный интервал (т. Е. Отсутствуют числа)?Нет других ограничений, например, нет уникальности чисел, нет гипотез о распределении и т. Д.

1 Ответ

1 голос
/ 09 июля 2019

Вы как-то должны сообщить своей функции, сколько элементов вы хотите, скажем, n. Если это известно (или у вас есть разумные значения по умолчанию), вы можете использовать:

  • создать последовательность из ваших входных значений
  • выберите с заменой n - sequence_length значений из вашей последовательности
  • объединить последовательность с выбранными значениями
  • перемешать результат

Пример кода в R с использованием 4 * (to - from) в качестве значения по умолчанию для n:

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

Создан в 2019-07-09 пакетом Представить (v0.3.0)

...