Je me demandais s'il était possible qu'un modèle / algorithme fixe soit utilisé par divers lecteurs de musique pour mélanger la liste de lecture. A mon avis, je pourrais comprendre que ces lecteurs multimédias utilisent le même algorithme pour le brassage. Je dis donc que j'ai pratiquement expérimenté le comportement de la fonction de lecture aléatoire de différents lecteurs sur la même playlist. Donc, si tel est le cas, quel est cet algorithme?
Encore une fois Si ma supposition est fausse et que chaque joueur utilise son propre algorithme de mélange, comment puis-je obtenir la même séquence de chansons après avoir mélangé plusieurs lecteurs avec la même liste de lecture?
MODIFIER:
Ma question est de savoir si tous les lecteurs de musique partagent un algorithme commun pour le brassage. Si oui, alors quel algorithme? Si non, comment se fait-il que je reçoive la même séquence de chansons après avoir mélangé la même liste de lecture depuis mon nokia mobile 5233, 5300, le lecteur multimédia VLC, le lecteur Windows Media, etc.
la source
Réponses:
Il existe un certain nombre d'algorithmes de lecture aléatoire, le plus populaire étant Fisher-Yates . Même si un joueur utilise cet algorithme, sa mise en œuvre dépendra d'un certain nombre d'autres facteurs (langage de codage, support des nombres aléatoires). À moins qu'un joueur ne copie directement le code d'un autre programme, sa mise en œuvre sera différente.
De plus, alors que la plupart des joueurs «mélangent» une liste de lecture, j'ai vu des listes qui sélectionnent toujours au hasard la chanson suivante à jouer (la même chanson étant lue deux fois de suite).
Il est étrange que vous déclariez que différents lecteurs «mélangent» la même liste de lecture dans le même ordre. Même en utilisant le même algorithme (ou le même lecteur), une liste de lecture aléatoire doit être créée chaque fois que vous la mélangez.
la source
D'après ce que j'ai observé sur les produits Apple, bien que Shuffle ait un élément aléatoire pour sélectionner l'élément suivant à lire, il semble également exister un classement de chaque élément basé sur l'historique de lecture, le classement des utilisateurs (étoiles) et leur inclusion dans les listes de lecture. Les éléments les mieux classés sont plus susceptibles d'apparaître plus tôt dans le mélange.
la source
J'ai fait un petit lecteur multimédia pour une PSP il y a quelque temps (je ne l'ai jamais relâché) et j'ai implémenté la fonctionnalité de lecture aléatoire comme ceci:
n
(représentantn
le nombre de chansons du lecteur).n
(le nombre de chansons):|random(time+last_id)|%n
. Ainsi, l'identifiant pseudo-aléatoire se situerait dans la plage de 0 àn
et ne se répéterait pas si l'espace entre "shuffles" est inférieur à une milliseconde carrandom(time)
donnerait le même nombre si la graine aléatoire (latime
dans ce cas) est également le même numéro.m
dernières chansons jouées afin que la nouvelle chanson sélectionnée de manière pseudo aléatoire ne soit pas répétée au moins entrem
différentes chansons. Si la nouvelle chanson est dans la liste, répétez l'étape 2.Cela a fonctionné assez bien pour moi, en utilisant une liste de longueur,
.9*n
je n'aurais jamais une chanson répétée dans au moins 90% du nombre total de chansons. Ceci est bien sûr tout sauf efficace avec les bibliothèques de chansons contenant de nombreuses chansons. Mais une PSP ne pouvait en stocker que quelques centaines, donc c’était bien.la source