Мне было интересно, может ли быть какой-то фиксированный шаблон / алгоритм, которым следуют различные музыкальные проигрыватели для перемешивания списка воспроизведения. Из своего предположения я мог бы понять, что эти медиаплееры используют тот же алгоритм для перетасовки. Я говорю так, что практически я экспериментировал с функцией перемешивания разных игроков в одном и том же плейлисте. Таким образом, если это так, то что это за алгоритм?
Опять же, если мое предположение неверно, и каждый игрок использует свой собственный алгоритм тасования, то почему я могу получить одинаковую последовательность песен после тасования от разных игроков с одинаковым списком воспроизведения?
РЕДАКТИРОВАТЬ:
Мой вопрос заключается в том, чтобы узнать, используют ли все музыкальные проигрыватели общий алгоритм перемешивания. если ДА, то какой алгоритм? Если нет, то почему у меня такая же последовательность песен после перетасовки одного и того же списка воспроизведения с моего мобильного телефона Nokia 5233, 5300, VLC media Player, Windows Media Player и т. д.
Все дело в том, что если он должен быть «случайным», то вы не сможете сказать, какой алгоритм используется, если не получите исходный код или не спросите разработчика. Конечно, есть медиа-плееры с открытым исходным кодом. Но быстрый Google показывает, что нечто подобное очень часто используется: http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
James P 11 лет назад
3
+1 Я думаю, что вы правы. Трудно сказать, какой именно алгоритм используется. И я тоже думаю, что самый распространенный алгоритм - это Фишер-Йейтс. Благодарю. Просто сформулируйте это в ответе, чтобы я мог принять это.
Mohsin Akhtar 11 лет назад
0
даже если алгоритмы одинаковы, результат перемешивания должен быть случайным, я имею в виду «вы не можете получить одинаковую последовательность песен после перемешивания от разных игроков с одинаковым списком воспроизведения», или нет необходимости перемешивать карты при игре в карточные игры.
LiuYan 刘研 11 лет назад
0
3 ответа на вопрос
1
Brad Patton
There are a number of different shuffle algorithms with Fisher-Yates being one of the more popular. Even if a player uses that algorithm it's implementation will depend on a number of other factors (coding language, random number support). Unless a player directly copies code from another program it will be different in implementation.
Additionally while most players 'shuffle' a playlist I've seen ones that always randomly pick the next song to play (resulting in the same song played twice in a row).
It's strange that you claim that different players 'shuffle' the same playlist in the same order. Even using the same algorithm (or same player) should result in a random playlist each time it is shuffled.
1
Doug Ferguson
Из того, что я наблюдал на продуктах Apple, в то время как у shuffle есть случайный элемент для выбора того, какой элемент будет воспроизводиться следующим, также существует ранжирование каждого элемента на основе истории воспроизведения, рейтинга пользователя (звездочек) и включения в плейлисты. Предметы с более высоким рейтингом чаще появляются раньше в случайном порядке.
1
arielnmz
Некоторое время назад я сделал небольшой медиаплеер для PSP (я никогда не рассказывал об этом) и реализовал функцию случайного воспроизведения следующим образом:
Каждой песне на музыкальном проигрывателе вы присваиваете целое число без знака в диапазоне от 0 до n( nколичество песен в проигрывателе).
Генерирует случайное число, используя текущее время (мс) плюс последнюю песню идентификатор в качестве семени, сделать его целым и модуль с n(количеством песен) |random(time+last_id)|%n. Таким образом, псевдослучайный идентификатор будет в диапазоне от 0 до, nи он не будет повторяться, если интервал между «перемешиваниями» будет меньше миллисекунды, потому random(time)что даст то же число, если случайное начальное число ( timeв данном случае) также тот же номер.
Сохраните список mпоследних проигранных песен, чтобы новая псевдослучайно выбранная песня не повторялась, по крайней мере, между mразными песнями. Если новая песня находится в списке, повторите шаг 2.
Это сработало довольно хорошо для меня, используя список длины, .9*nкоторую я никогда не получу в повторяющейся песне, по крайней мере, в 90% от общего количества песен. Это, конечно, далеко не эффективно с библиотеками песен со многими песнями. Но PSP мог хранить только несколько сотен, так что все было в порядке.