Введение
Вы когда-нибудь задумывались, как песни перемешиваются в плейлисте? Или даже как карты можно перетасовать честно? Что ж, так случилось, что два статистика придумали алгоритм, решающий эту дилемму.
Теперь зачем нам этот алгоритм как часть нашего программного обеспечения. Ну по нескольким причинам:
- Алгоритм Фишера-Йейтса поможет устранить элемент предсказуемости. Мы не хотим, чтобы люди предсказывали следующий номер в игре в казино. Или следующую песню в плейлисте.
- Кроме того, это обеспечивает некоторую безопасность для разработчика. Поскольку другие случайные методы не предлагают непредсказуемости, которую предлагает этот алгоритм.
Концепция
Основная концепция заключается в выборе случайных билетов/карт/песен или всего, что вам нравится, из контейнера. Алгоритм обеспечивает способ сделать это эффективным и строгим образом. Так что это гарантирует беспристрастный результат.
Первоначальный метод Фишера-Йейтса немного отличается от современного метода. Ниже я описал пятиэтапный процесс с использованием умников:
- Поместите на стол 6 умников (разные цвета разума).
* Возьмите несколько костей — очень важная часть нашего эксперимента. кости.
* Теперь у нас 5 умников
* Снова бросьте кости и вытащите число от 1 до 5. Если выпадет 6, бросьте еще раз.
* Опять та же последовательность. Если число не в пределах диапазона, бросайте еще раз.
* Продолжайте, пока ничего не останется. Вы не обогатились знаниями о методе перетасовки, но и полны умников.
Современный метод
Вышеупомянутый метод был усовершенствован в 1964 году Ричардом Дерстенфельдом.
- Теперь первые два этапа одинаковы.
- Вот тут-то и становится интересно. Предположим, я выбрасываю 5.
Я обмениваю пятого умника на последнего, а затем съедаю пятого умника. Ты все еще со мной? - Теперь предположим, что мы бросаем два. На этот раз мы поменяем местами второго умника с последним умником, а затем съедим умника, который был на второй позиции.
- Продолжайте выполнять этот цикл, пока перестановка не будет завершена.
Использование этого метода с Python
Теперь, как это связано с программированием? Ну, как я уже говорил, он предлагает менее предсказуемую перетасовку в разработке программного обеспечения.
Ниже я привел пример на Python.
import random <! — adding ary as an argument → def shuffle(ary) <! — what is the length of the array → a=len(ary) <! — b is the array minus one → b=a-1 <! — Iterate over the array → for d in range(b,0,-1): <! — Lets generate a random number → e = random.randint(0,d) <! — continue if the last number is the same as the random number thrown → if e == d: continue <! — now the swapping begins. → ary[d],ary[e]=ary[e],ary[d] return ary
Теперь в приведенном выше примере мы не едим умников, а просто меняем вещи местами. Хотя действует тот же принцип. Просто мы перемещаемся вниз по порядку и меняем цвета умников.
Надеюсь, это объясняет простыми словами, как можно перетасовать ваш плейлист.