Короткий ответ
Фиксация seed делает результаты операций со случайностью (выборка, перемешивание, разбиение на группы) воспроизводимыми: при повторном запуске кода с тем же seed получаются те же "случайные" числа.
Как это работает подробнее
генераторы псевдослучайных чисел детерминированы относительно внутреннего состояния; seed задаёт стартовое состояние, поэтому последовательность "случайных" чисел полностью определяется значением seed, а не является настоящей случайностью.
Пример кода
Пример Python
import numpy as np
np.random.seed(42)
sample1 = np.random.choice([1, 2, 3, 4, 5], size=3)
np.random.seed(42)
sample2 = np.random.choice([1, 2, 3, 4, 5], size=3)
print(sample1, sample2)Что использовать на практике
- На практике: фиксация seed важна при df.sample(), train_test_split, симуляциях для A/B-тестов и любых расчётах, где результат должен быть проверяемым коллегой или воспроизводимым через время; это не делает выборку "правильной", а только повторяемой.
- Проверка: sample1 и sample2 должны быть идентичны, что подтверждает воспроизводимость при одинаковом seed.
Подводные камни
- Частые ошибки: фиксируют seed в одном месте кода (например, только для NumPy), но используют случайность одновременно из нескольких источников (встроенный random, NumPy, pandas), получая невоспроизводимый результат, потому что не все источники синхронизированы одним seed; считают, что одинаковый seed гарантирует "правильный" или "репрезентативный" результат, хотя он лишь гарантирует повторяемость.