@Liam (und alle anderen, die es interessiert):
Ich habe in meiner Rotation ein nettes Beispiel gefunden, wie mAirList manchmal etwas länger suchen muss.
Pick random item from folder "2000er (Main)" (742), item count: 558, pick idx: 3
1/558: ID 6289, artist "Lido Brothers", title "Mambo Italiano"
Last use: 2021-11-17 00:00
Track separation is 1865
Artist separation for "LIDO BROTHERS" is 1865
Title separation for "MAMBO ITALIANO" is 1865
Overall penalty is 0
2/558: ID 1446, artist "No Angels", title "Goodbye To Yesterday"
Last use: 2021-11-17 00:00
Track separation is 1865
Artist separation for "NO ANGELS" is 5
Artist separation penalty is 2
Title separation for "GOODBYE TO YESTERDAY" is 1865
Overall penalty is 2
3/558: ID 6308, artist "Britney Spears", title "Lucky"
Last use: 2021-11-17 00:00
Track separation is 1865
Artist separation for "BRITNEY SPEARS" is 2
Artist separation penalty is 5
Title separation for "LUCKY" is 28
Overall penalty is 5
4/558: ID 14844, artist "No Angels", title "Maybe"
Last use: 2021-11-17 00:00
Track separation is 1865
Artist separation for "NO ANGELS" is 5
Artist separation penalty is 2
Title separation for "MAYBE" is 5
Artist separation penalty is 2
Overall penalty is 4
5/558: ID 15027, artist "Anastacia", title "Not That Kind"
Last use: 2021-11-17 00:00
Track separation is 1865
Artist separation for "ANASTACIA" is 1
Artist separation penalty is 6
Title separation for "NOT THAT KIND" is 1
Artist separation penalty is 6
Overall penalty is 12
Maximum penalty of 5 exceeded, skipping
6/558: ID 16843, artist "Preluders", title "Everday Girl"
Last use: 2021-11-17 00:00
Track separation is 1865
Artist separation for "PRELUDERS" is 1865
Title separation for "EVERDAY GIRL" is 1865
Overall penalty is 0
7/558: ID 6248, artist "N-Sync", title "Bye Bye Bye"
Last use: 2021-11-17 00:00
Track separation is 1865
Artist separation for "N-SYNC" is 1865
Title separation for "BYE BYE BYE" is 1865
Overall penalty is 0
8/558: ID 6158, artist "Juanes", title "La Camisa Negra"
Last use: 2021-11-17 00:00
Track separation is 1865
Artist separation for "JUANES" is 3
Artist separation penalty is 4
Title separation for "LA CAMISA NEGRA" is 1865
Overall penalty is 4
9/558: ID 6606, artist "Moby", title "Extreme Ways"
Last use: 2021-11-17 00:00
Track separation is 1865
Artist separation for "MOBY" is 118
Title separation for "EXTREME WAYS" is 1865
Overall penalty is 0
Pick index reached
End of search, i=9, Count=558, minPenalty=0, minPenaltyListCount=4
Picked: ID 6606, artist "Moby", title "Extreme Ways"
Aus einem Ordner mit 558 Elementen (item count: 558
) sucht er aus den am längsten nicht gespielten Elementen jetzt das vierte (pick idx: 3
; der Index beginnt bei 0
) am besten passendste Element heraus.
Pick random item from folder "2000er (Main)" (742), item count: 558, pick idx: 3
Doch dazu müssen hier insgesamt neun Elemente herangezogen werden:
-
1/558
Overall penalty is 0
Erster Treffer. Merken und nach dem nächsten Treffer suchen. -
2/558
Overall penalty is 2
Sorry, das wollen wir nicht. Nächster! -
3/558
Overall penalty is 5
Das wollen wir ja noch weniger. Nächster! -
4/558
Overall penalty is 4
Du ahnst es schon: Näch…! -
5/558
Overall penalty is 12
Maximum penalty of 5 exceeded, skipping
Autsch!
Okay, der würde in diesem Durchlauf ohnehin durchfallen, aber hier greift die von mir gesetzte Notbremse.
Schön, das mal zu sehen. -
6/558
Overall penalty is 0
Zweiter Treffer. Gemerkt, danke. -
7/558
Overall penalty is 0
Dritter Treffer. Der nächste Treffer wird ausgewählt und die Suche ist beendet. -
8/558
Overall penalty is 4
Nein, leider nicht. Noch ein Versuch. -
9/558
Overall penalty is 0
Vierter Treffer - wir haben ihn!
End of search, i=9, Count=558, minPenalty=0, minPenaltyListCount=4
Meistens geht es schnell und einfach, aber das sticht mal mit allem heraus.
Ich dachte, das könnte die Community interessieren.
Was passiert eigentlich, wenn kein Element einen minPenalty=0
hat?
Dann wird der Zähler um +1
heraufgesetzt und der Durchlauf beginnt von vorn.
Was passiert mit den Elementen, die einen Overall penalty is 2
oder höher haben?
Die bleiben so lange an der Spitze der Liste stehen, bis sie unter anderen Elementen mit diesem Wert zur Auswahl stehen.
Solange es Elemente mit Overall penalty is 0
gibt, die den pick idx: [n]
erfüllen, kommt der einfach nicht zum Zuge. Da muss man dann mal nachschauen, was mit dem Titel in dem Ordner los ist oder ob die Abstände so passen. Sonst bleibt der immer oben in der Liste und wird nie gewählt.
Ich finde, da hat sich Torben schon ordentlich was dabei gedacht. Ist auch sicher sehr lang “historisch gewachsen”.
Disclaimer: Meine Rotation läuft nicht 24/7 und auch nicht jeden Tag. Aber ich fordere sie zwischendurch immer wieder mal. Da lohnt sich der Blick in so ein Log auf jeden Fall.