Случайное число-Set.seed (N) в R [дубликат]


38

На этот вопрос уже есть ответ здесь:

Я понимаю, что один использует set.seed()в R для генерации псевдослучайных чисел. Я также понимаю, что, используя тот же номер, например, set.seed(123)страхует, вы можете воспроизвести результаты.

Но я не понимаю, что означают сами ценности. Я играю с несколькими функциями, и некоторые используют set.seed(1)или set.seed(300)или set.seed(12345). Что означает это число (если что-нибудь), и когда я должен использовать другое.

Например, в книге, над которой я работаю, они используются set.seed(12345)при создании обучающего набора для деревьев решений. Затем в другой главе они используют set.seed(300)для создания случайного леса.

Просто не получай номер.


6
это помогает? stackoverflow.com/questions/14684437/… Кроме того, set.seed () в R предоставляет довольно хорошую информацию.
doug.numbers

6
Основной смысл использования начального числа состоит в том, чтобы иметь возможность воспроизводить определенную последовательность «случайных» чисел. Вообще говоря, если вам не нужно это делать, вы бы не стали семенем. Само семя не имеет никакого внутреннего значения, за исключением того, что это способ сообщить генератору случайных чисел «с чего начать». Вы можете подумать, что это похоже на связь между ПИН-кодом и вашим банковским счетом. PIN связан с длинной строкой цифр (Ваш номер счета), но это не по своей сути интерпретируемое количества (есть интерпретация, но установить его, вы игнорируете , что).
Glen_b

4
Для
справки

Просто комментарий: я рекомендую установить генератор случайных чисел только (i) для отладки скрипта, для обнаружения некоторых ошибок и т. Д. Или (ii) для отправки / публикации результатов, чтобы их можно было проверить.
AADF

Ответы:


39

Выбранное вами начальное число является отправной точкой, используемой для генерации последовательности случайных чисел, поэтому (при условии, что вы используете один и тот же генератор псевдослучайных чисел) вы получите те же результаты при том же самом начальном числе. Что касается вашего второго вопроса, этот короткий фрагмент из описания эквивалентной функциональности в Stata может быть полезным:

Мы не можем подчеркнуть это достаточно: не сажайте семя слишком часто. Чтобы понять, почему это такая плохая идея, рассмотрим ограничивающий случай: вы устанавливаете начальное число, рисуете одно псевдослучайное число, сбрасываете начальное число, снова рисуете и продолжаете. Полученные вами псевдослучайные числа будут не более чем семенами, которые вы запускаете через математическую функцию. Полученные вами результаты не будут случайными, если выбранные вами семена не будут случайными. Если у вас уже были такие числа, почему вы вообще потрудились использовать генератор псевдослучайных чисел?

http://www.stata.com/manuals13/rsetseed.pdf


15
Кто знал, что у Статы есть такая интересная документация: «Другие пытаются составить случайное число, полагая, что если они содержат достаточно цифр, результат просто должен быть случайным. Это изменение правила пяти секунд для отброшенной еды, и мы допускаем, что использовать оба эти правила "
вырожденный

4

Короче говоря, сами цифры ничего не значат! Если вы смотрите на чужой код (как в двух приведенных выше примерах), числа не изменяют функциональность функции; Также нет «хороших» номеров для конкретных функций. Это зависит только от выбора авторов.

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

Однако, как замечательно отмечает Корковадо, для некоторых приложений вам нужно быть очень осторожным с выбором, который вы делаете. Если математически вам требуется число сгенерированных псевдослучайно чисел, то не может быть шаблона для выбранных вами чисел.


1

Функция set.seed () в R принимает (произвольный) целочисленный аргумент. Таким образом, мы можем взять любой аргумент, скажем, 1 или 123 или 300 или 12345, чтобы получить воспроизводимые случайные числа.

Кроме того, в пакетеTeachingDemos функция char2seed позволяет пользователю устанавливать начальное число на основе строки символов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.