Это зависит от того, как вы будете запускать код или есть какой-нибудь код, который несколько стохастичен, поскольку он рисует случайные числа случайным образом. (Примером этого являются тесты перестановки в нашем веганском пакете, где мы продолжаем перестановку только до тех пор, пока не накопим достаточно данных, чтобы узнать, отличается ли результат от заявленной ошибки Типа I с учетом частоты ошибок Типа II.) Хотя даже это не должно влиять на ничьи ...
Если окончательный сценарий будет когда-либо выполняться только как пакетное задание или полностью, и в генераторе псевдослучайных чисел нет стохастических отрисовок, тогда можно безопасно установить начальное число в верхней части сценария и запустить его полностью. ,
Если вы хотите пошагово выполнить код, возможно, перезапустить блоки, то вам нужен set.seed()
вызов перед каждым вызовом функции, который будет извлекаться из генератора псевдослучайных чисел.
Что касается моих научных работ, я обычно делаю суперзащиту и устанавливаю семена перед каждым фрагментом кода; это позволяет обновлять сценарий позднее, который, возможно, потребуется в любой момент вставить в существующий сценарий, например, чтобы ответить на комментарии рецензентов или соавторов.
Надеемся, что ваши результаты не будут зависеть от определенного набора псевдослучайных значений, поэтому проблема заключается в возможности воспроизвести точные значения, указанные в отчете или статье. Даже несмотря на то, что вы можете быть очень оборонительными и устанавливать начальное значение для каждого фрагмента кода, вам все равно может потребоваться воссоздать точную установку - версию R и версии пакета, поэтому запись этих деталей крайне важна. Для большей безопасности вам необходимо хранить предыдущие версии R и пакеты для конкретных проектов / документов. Действительно, многие люди делают это.
R
работ это состояние можно найти в.Random.seed
. Больше всего меня беспокоитR
то, что некоторые процедуры могут обойти это - и, возможноset.seed
, в некоторых случаях могут вообще игнорировать .