Zależy to od tego, jak uruchomisz kod lub czy jest jakiś kod, który jest nieco stochastyczny, ponieważ losowo losuje liczby. (Przykładem tego są testy permutacji w naszym pakiecie wegańskim , gdzie kontynuujemy permutację, dopóki nie zgromadzimy wystarczającej ilości danych, aby wiedzieć, czy wynik różni się od podanego błędu typu I uwzględniającego poziom błędu typu II). Mimo to nawet to nie powinno wpływać na losowania ...
Jeśli końcowy skrypt będzie zawsze uruchamiany tylko jako zadanie wsadowe lub w całości i nie będzie losowania stochastycznego z generatora liczb pseudolosowych, można bezpiecznie ustawić ziarno na początku skryptu i uruchomić go w całości .
Jeśli chcesz przejść przez kod, być może ponownie uruchomić bloki, potrzebujesz set.seed()
wywołania przed każdym wywołaniem funkcji, które będzie czerpać z generatora liczb pseudolosowych.
W moich pracach naukowych rutynowo wybieram superobronę i ustawiam nasiona przed każdą częścią kodu; umożliwia to aktualizację skryptu w późniejszym terminie, który może wymagać wstawienia do istniejącego skryptu w dowolnym momencie - powiedzmy, aby odpowiedzieć na komentarze recenzentów lub współautorów.
Mamy nadzieję, że wyniki nie będą zależeć od określonego zestawu losowo wybranych wartości pseduo, więc problemem jest możliwość odtworzenia dokładnych wartości podanych w raporcie lub dokumencie. Nawet jeśli jesteś bardzo defensywny i ustawiasz ziarno dla każdego fragmentu kodu, nadal może być konieczne odtworzenie dokładnej instalacji --- wersja R i wersje pakietu, więc rejestrowanie tych szczegółów jest niezbędne. Aby być bardziej bezpiecznym, musisz zachować poprzednie wersje R i pakiety dla konkretnych projektów / dokumentów. Rzeczywiście, wiele osób to robi.
R
prac ten stan można znaleźć w.Random.seed
. Moją największą obawąR
jest to, że niektóre rutyny mogą to obejść - a możeset.seed
w niektórych przypadkach mogą całkowicie zignorować .