TGViewer
Python/ django Python/ django @pythonl · 58.7K subscribers
Post #5263 7.97K
🖥 Малоизвестный факт о Python random.seed(), который может поломать ваш код

Документация создаёт впечатление, что любое целое число просто используется как seed (это “начальная точка” для генератора случайных чисел.).

Но Python перед использованием просто берёт абсолютное значение.

То есть:

➡️ seed(3) и seed(-3) - порождают один и тот же поток случайных чисел.

Это значит, что разные seed не всегда дают разные последовательности -

Python гарантирует только обратное: одинаковый seed → одинаковые числа.

Почему так?
В исходниках CPython есть строка, которая буквально делает:

seed = abs(seed)

И знак просто теряется, хотя алгоритм случайных чисел мог бы учитывать его.

🧠 Вывод:

Не используйте небольшие вариации seed (например 5 и -5) как способ получить разные потоки случайностей — это небезопасно.
Если вам нужны независимые RNG — создавайте их явно, а не полагаясь на “умные” seed.

[1] https://docs.python.org/3/library/random.html
[2] https://github.com/python/cpython/blob/main/Modules/_randommodule.c#L321C13-L321C30

@pythonl
  • 👍 18
  • ❤ 10
  • 🔥 3
  • 😁 2
More from @pythonl
  1. Sep 28, 2026🚀 Jina-OCR-v1 разбирает целые страницы в Markdown со скоростью 2,57 страницы/с Jina AI пр…
  2. Sep 27, 2026🐍 В Python 3.15 решили мягко «похоронить» re.match() re.match() никуда не удаляют, но для…
  3. Sep 26, 2026⚡️ Qwen-Image за 6 шагов: Viggle ускорили генерацию и редактирование в 5 раз Viggle выложи…
  4. Sep 25, 2026🖥 Заголовки безопасности для FastAPI - одной строкой 🛡️ fastapi-security-headers добавля…
  5. Sep 24, 2026Линтер для инструкций ИИ-агентов LintLang проверяет AGENTS.md, CLAUDE.md, SKILL.md, описан…
  6. Sep 24, 2026‼️Ваши данные уже слиты. Вопрос лишь в том, кто и как ими воспользуется. Только в 2025 год…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →