Генерация случайного (?) Числа в R с использованием sample () всегда возвращает один и тот же результат - PullRequest
0 голосов
/ 19 сентября 2018

Я пишу сценарий R (использующий RStudio в Ubuntu 18.04), и в определенный момент мне нужно случайным образом (без замены) выбрать 123 случайных числа в диапазоне от 1 до 1040. Я делаю это с помощью:

myvector[sample(1:1040,X,replace=F)] = 1  

где 'myvector' - это 040-длинный вектор длиной 1040, и мне нужно заменить 0 на 1 в X = 123 случайных положениях.

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

Как ни странно, но каждый раз, когда явыполнить скрипт, содержащий эту строку кода, вместо этого он выбирает те же 123 числа.

Сначала я подумал, что это может быть связано с какой-то тривиальной ошибкой сохранения / переименования объектов, но даже если я добавлю

print(sample(1:1040,123,replace=F))

в сценарий, если выбирает всегда один и тот же набор чисел(отличается от выбранного в строке кода выше, но идентично на каждой итерации).

Я не вызывал set.seed () нигде в скрипте и / или с тех пор, как я включил компьютер, поэтомуЯ не понимаю, почему он так себя ведет.

Есть идеи?

Большое спасибо

1 Ответ

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

Если вы загрузили предыдущее рабочее пространство, начальное число из этого рабочего пространства также загружается.Это будет давать те же результаты каждый раз, когда вы вызываете sample.

Включите эту строку

rm(.Random.seed, envir=globalenv())

перед вызовом sample

...