Как перемешиваются различные музыкальные проигрыватели [закрыто]

2

Мне было интересно, может ли быть установлен фиксированный шаблон / алгоритм, используемый различными музыкальными проигрывателями для перетасовки списка воспроизведения. Из своего предположения я мог бы понять, что эти медиаплееры используют тот же алгоритм для перетасовки. Я говорю так, что практически я экспериментировал с функцией перемешивания различных игроков в одном и том же списке воспроизведения. Таким образом, если это так, то что это за алгоритм?

Опять же, если мое предположение неверно, и каждый игрок использует свой собственный алгоритм тасования, то почему я могу получить одинаковую последовательность песен после тасования от разных игроков с одинаковым списком воспроизведения?

РЕДАКТИРОВАТЬ:

Мой вопрос заключается в том, чтобы узнать, используют ли все музыкальные проигрыватели общий алгоритм перемешивания. если ДА, то какой алгоритм? Если нет, то почему я получил ту же последовательность песен после перетасовки одного и того же списка воспроизведения с моего мобильного телефона Nokia 5233, 5300, VLC media Player, Windows Media Player и т. д.

Мохсин Ахтар
источник
3
Все дело в том, что если он должен быть «случайным», то вы не сможете сказать, какой алгоритм используется, если не получите исходный код или не спросите разработчика. Конечно, есть медиа-плееры с открытым исходным кодом. Но быстрый Google показывает, что что-то вроде этого очень часто используется: en.wikipedia.org/wiki/Fisher-Yates_shuffle
Джеймс П
+1 Я думаю, что вы правы. Трудно сказать, какой именно алгоритм используется. И я тоже думаю, что самый распространенный алгоритм - это Фишер-Йейтс. Благодарю. Просто сформулируйте это в ответе, чтобы я мог принять это.
Мохсин Ахтар
даже если алгоритмы одинаковы, результат перемешивания должен быть случайным, я имею в виду «вы не можете получить одинаковую последовательность песен после перемешивания от разных игроков с одинаковым списком воспроизведения», или нет необходимости перемешивать карты при игре в карточные игры.
LiuYan 研 研

Ответы:

1

Существует ряд различных алгоритмов случайного перемешивания, причем Фишер-Йейтс является одним из самых популярных. Даже если игрок использует этот алгоритм, его реализация будет зависеть от ряда других факторов (язык кодирования, поддержка случайных чисел). Если игрок непосредственно не скопирует код из другой программы, он будет отличаться по реализации.

Кроме того, хотя большинство игроков «перетасовывают» плейлист, я видел те, которые всегда случайным образом выбирают следующую песню для воспроизведения (в результате одна и та же песня воспроизводится дважды подряд).

Странно, что вы утверждаете, что разные игроки «перемешивают» один и тот же список воспроизведения в одном и том же порядке. Даже использование одного и того же алгоритма (или одного и того же игрока) должно приводить к случайному списку воспроизведения каждый раз, когда он перемешивается.

Брэд Паттон
источник
1

Из того, что я наблюдал на продуктах Apple, в то время как у shuffle есть случайный элемент для выбора того, какой элемент будет воспроизводиться следующим, также существует ранжирование каждого элемента на основе истории воспроизведения, рейтинга пользователя (звездочек) и включения в плейлисты. Предметы с более высоким рейтингом чаще появляются раньше в случайном порядке.

Даг Фергюсон
источник
1

Некоторое время назад я сделал небольшой медиаплеер для PSP (я никогда не рассказывал об этом) и реализовал функцию случайного воспроизведения следующим образом:

  • Каждой песне на вашем музыкальном проигрывателе вы назначаете целое число без знака в диапазоне от 0 до n( nколичество песен в проигрывателе).
  • Генерирует случайное число , используя текущее время (мс) плюс последнюю песню идентификатор в качестве семени, сделать его целым и модуль с n(количеством песен) |random(time+last_id)|%n. Таким образом, псевдослучайный идентификатор будет в диапазоне от 0 до, nи он не будет повторяться, если интервал между «перемешиваниями» будет меньше миллисекунды, потому random(time)что даст то же число, если случайное начальное число ( timeв данном случае) также тот же номер.
  • Сохраните список mпоследних проигранных песен, чтобы новая псевдослучайно выбранная песня не повторялась, по крайней мере, между mразными песнями. Если новая песня находится в списке, повторите шаг 2.

Это сработало довольно хорошо для меня, используя список длины, .9*nкоторую я никогда не получу в повторяющейся песне, по крайней мере, на 90% от общего количества песен. Это, конечно, далеко не эффективно с библиотеками песен со многими песнями. Но PSP мог хранить только несколько сотен, так что все было в порядке.

arielnmz
источник