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