Мне было интересно, может ли быть установлен фиксированный шаблон / алгоритм, используемый различными музыкальными проигрывателями для перетасовки списка воспроизведения. Из своего предположения я мог бы понять, что эти медиаплееры используют тот же алгоритм для перетасовки. Я говорю так, что практически я экспериментировал с функцией перемешивания различных игроков в одном и том же списке воспроизведения. Таким образом, если это так, то что это за алгоритм?
Опять же, если мое предположение неверно, и каждый игрок использует свой собственный алгоритм тасования, то почему я могу получить одинаковую последовательность песен после тасования от разных игроков с одинаковым списком воспроизведения?
РЕДАКТИРОВАТЬ:
Мой вопрос заключается в том, чтобы узнать, используют ли все музыкальные проигрыватели общий алгоритм перемешивания. если ДА, то какой алгоритм? Если нет, то почему я получил ту же последовательность песен после перетасовки одного и того же списка воспроизведения с моего мобильного телефона Nokia 5233, 5300, VLC media Player, Windows Media Player и т. д.
источник
Ответы:
Существует ряд различных алгоритмов случайного перемешивания, причем Фишер-Йейтс является одним из самых популярных. Даже если игрок использует этот алгоритм, его реализация будет зависеть от ряда других факторов (язык кодирования, поддержка случайных чисел). Если игрок непосредственно не скопирует код из другой программы, он будет отличаться по реализации.
Кроме того, хотя большинство игроков «перетасовывают» плейлист, я видел те, которые всегда случайным образом выбирают следующую песню для воспроизведения (в результате одна и та же песня воспроизводится дважды подряд).
Странно, что вы утверждаете, что разные игроки «перемешивают» один и тот же список воспроизведения в одном и том же порядке. Даже использование одного и того же алгоритма (или одного и того же игрока) должно приводить к случайному списку воспроизведения каждый раз, когда он перемешивается.
источник
Из того, что я наблюдал на продуктах Apple, в то время как у shuffle есть случайный элемент для выбора того, какой элемент будет воспроизводиться следующим, также существует ранжирование каждого элемента на основе истории воспроизведения, рейтинга пользователя (звездочек) и включения в плейлисты. Предметы с более высоким рейтингом чаще появляются раньше в случайном порядке.
источник
Некоторое время назад я сделал небольшой медиаплеер для PSP (я никогда не рассказывал об этом) и реализовал функцию случайного воспроизведения следующим образом:
n
(n
количество песен в проигрывателе).n
(количеством песен)|random(time+last_id)|%n
. Таким образом, псевдослучайный идентификатор будет в диапазоне от 0 до,n
и он не будет повторяться, если интервал между «перемешиваниями» будет меньше миллисекунды, потомуrandom(time)
что даст то же число, если случайное начальное число (time
в данном случае) также тот же номер.m
последних проигранных песен, чтобы новая псевдослучайно выбранная песня не повторялась, по крайней мере, междуm
разными песнями. Если новая песня находится в списке, повторите шаг 2.Это сработало довольно хорошо для меня, используя список длины,
.9*n
которую я никогда не получу в повторяющейся песне, по крайней мере, на 90% от общего количества песен. Это, конечно, далеко не эффективно с библиотеками песен со многими песнями. Но PSP мог хранить только несколько сотен, так что все было в порядке.источник