Детерминированная генерация псевдослучайных чисел в R

Мне нужно сгенерировать вектор "случайных" чисел, за исключением того, что они должны быть полностью детерминированными. Распределение, из которого приходят числа, не так важно. Какой простой способ сделать это в R?

Причина не использовать что-то вроде runif является то, что он возвращает другую последовательность каждый раз, когда он вызывается.

Причина не генерации одной последовательности (с runif) и повторное его использование заключается в том, что вызовы осуществляются на разных машинах. Я мог бы жестко закодировать последовательность в сценарий, но длина необходимой последовательности неизвестна во время разработки, поэтому предпочтительна псевдослучайная последовательность, основанная на некотором жестко закодированном семени.

2 ответа

Решение

Знаете ли вы о set.seed() команда?

R> set.seed(42); runif(3)           
[1] 0.914806 0.937075 0.286140
R> set.seed(42); runif(3)            # same seed, same numbers
[1] 0.914806 0.937075 0.286140
R> set.seed(12345); runif(3)         # different seed, different numbers
[1] 0.720904 0.875773 0.760982
R>

Существует также пакет SoDaруководство [PDF]), которое позволяет вам обернуть другие операции и восстановить начальное и конечное начальное число. Это просто обертка вокруг set.seed() но вы можете проверить сами (например, в модульных тестах) легче.

Другие вопросы по тегам