Я ищу варианты псевдокодов для сортировки моих mp3-файлов таким образом, чтобы избежать повторения названий и исполнителей . Я слушаю эстрадных певцов - Фрэнка Синатру, Тони Беннетта, Эллу Фицджеральд и других, поющих старые стандарты. Каждый артист записывает множество одинаковых песен - Fly Me To The Moon, The Way You Look Tonight, Stardust и т. Д. Моя цель - расположить песни (или заказать плейлист) с максимальным пространством между исполнителями и названиями песен. Так что, если у меня 2000 песен и 20 песен Эллы, я бы хотел услышать ее только один раз из каждых 100 песен. Если 10 исполнителей поют Fly Me To The Moon, я бы хотел услышать это раз в 200 песен. Конечно, я хочу объединить эти два требования, чтобы создать мою «абсолютную случайность».
Я знаю, что это довольно широко открытый вопрос. Я еще не начал программировать его, поэтому я просто искал предложения о том, как выбрать подходящий подход. У меня действительно есть некоторые другие требования относительно равномерного распределения других атрибутов песни, но я не буду вдаваться в это здесь.
В качестве отправной точки я изменяю код, который нашел здесь, чтобы манипулировать mp3-файлами и читать теги ID3.
Я написал небольшое приложение, которое удовлетворяет мои потребности, используя ответ Парсифаля ниже. Я также написал следующий вопрос здесь . Спасибо за все отличные ответы!
while (length(songs) > 0) { x := rand(); addElem(shuffle, songs[x]); remElem(songs, x); }
но вы говорите, что хотите "абсолютную случайность". Я не знаю, что вы действительно хотите с этим, даже читая вопрос ...