Skip to main content
CheckTown
Генераторы

Рандомизатор списка: Честное перемешивание по Фишеру-Йейтсу

Опубликовано 5 мин чтения
В этой статье

Что такое рандомизация списка?

Рандомизация списка — это процесс перестановки элементов в случайном порядке. Правильное перемешивание создаёт каждую возможную перестановку с равной вероятностью.

Рандомизация отличается от сортировки — сортировка даёт детерминированный результат, рандомизация каждый раз даёт разный.

Как работает алгоритм Фишера-Йейтса

Перемешивание Фишера-Йейтса — стандартный алгоритм для генерации равномерно случайных перестановок.

  • Начните с последнего элемента — выберите случайный индекс от 0 до n-1 и обменяйте
  • Перейдите к предпоследнему — выберите случайный индекс от 0 до n-2; повторите
  • Каждый элемент обрабатывается ровно один раз — алгоритм работает за время O(n)

Попробуйте бесплатно — без регистрации

Рандомизировать список →

Типичные варианты использования

Рандомизация используется во многих сценариях.

  • Случайное распределение — разделение участников на группы для A/B тестирования без предвзятости
  • Розыгрыши призов — перемешивание имён для честного выбора победителей
  • Порядок экзаменационных вопросов — рандомизация для уменьшения списывания
  • Перемешивание плейлиста — перестановка песен, задач или карточек

Советы и лучшие практики

Получайте честные и воспроизводимые результаты.

  • Используйте проверенный алгоритм — Фишера-Йейтса является золотым стандартом
  • Понимайте псевдослучайность — браузерные рандомизаторы используют ГПСЧ
  • Обрабатывайте дубликаты осознанно — каждый дубликат обрабатывается как отдельный элемент

Часто задаваемые вопросы

Действительно ли перемешивание Фишера-Йейтса честное?

Да, при правильной реализации с равномерным источником случайности каждая возможная перестановка имеет одинаковую вероятность.

Могу ли я воспроизвести тот же результат?

Для воспроизведения нужен генератор с начальным значением (seed). Большинство браузерных инструментов используют генераторы без seed.

Что происходит с дубликатами?

Дубликаты перемешиваются независимо. Алгоритм работает с позицией элемента, а не его значением.

Похожие инструменты