Passer des cassettes aux mp3

Plus le temps passe, plus j’ai l’impression d’être un dinosaure…. Lorsque j’étais jeune, j’écoutais de la musique sur des cassettes1. Je me souviens même avoir été enchanté par l’arrivée du premier walkman réversible: on n’était alors plus obligé de tourner la cassette au bout de 20 minutes. Quand soudain, à la fin des années 80 est arrivé le compact disc, et les lecteurs avec leur fonction Random ou Shuffle..

J’aurais du me douter que je tournerais mal parce que je me souviens avoir joué avec la platine de mes parents, en essayant de voir si la première chanson pouvait passer en premier avec une lecture aléatoire, mais aussi la seconde pouvait passer juste après. Bon, avec le recul, je me rends compte que j’ai du beaucoup user la platine parce qu’avec un disque de 10 titres, il faut 90 (ou 100) essais (en moyenne) pour qu’une lecture aléatoire commence effectivement par 1 et 2. C’est d’ailleurs à ce moment que j’ai aussi découvert les tirages avec et sans remises: avec certaines platines, on ne pouvait pas obtenir deux fois le même titre, alors que d’autres oui.
Puis sont arrivés les lecteurs mp3, où on n’avait plus 10 titres tirés au hasard, mais 200 voire 1000. Et l’autre jour en courant, je me suis posé les mêmes questions que lorsque j’étais tout petit (oui, je suis un dinosaure, mais j’étais jeune à cette époque): si le lecteur propose une fonction random avec remise, combien de chansons dois-je attendre, en moyenne, avant de réentendre une chanson que j’avais déjà entendu ?

  • De la probabilité d’entendre deux fois une chanson ?

Pour faire un peu formel, supposons que mon lecteur contienne https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp301.png chansons.
La probabilité de n’avoir aucune répétition sur https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp302.png lectures (on suppose https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp303.png) est

https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp304.png

qui correspond aussi au nombre d’arrangements de https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp302.png éléments parmi https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp301.png, divisé par https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp305.png, soit

https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp306.png

Si le ratio est faible (ou n est grand), on peut utiliser l’approximation https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp307.png et donc la probabilité s’approche par

https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp308.png

soit tout simplement – toujours en cherchant une approximation – une probabilité de n’avoir aucune répétition de

https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp309.png

Si on se donne une probabilité de n’avoir aucune répétition de https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp310.png, alors

https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp311.png

Avec https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp301.png=200 chansons sur mon lecteur mp3, en jouant 17 titres, j’ai environ 1 chance sur 2 d’avoir au moins un titre joué deux fois. Et 17 chansons, ça correspond à ce que j’écoute en faisant mon jogging…. Bref, le temps de faire mon jogging, j’ai 1 chance sur 2 d’entendre un titre deux fois.
Mais que se passerait-il si je tenais le raisonnement inverse ?

  • Problème dual et jogging interminable….

Autrement dit, combien de temps vais-je courir si je décide de m’arrêter lorsque j’entends (pour la première fois) un titre pour la seconde fois ? En fait, Donald Knuth en parle un peu dans son livre the art of computer programming: on peut montrer que l’espérance du nombre de titres qu’il faudra jouer pour avoir une première répétition parmi n titres est de la forme

https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp312.png

qui admet un développement asymptotique

https://perso.univ-rennes1.fr/arthur.charpentier/latex/mp33333.png

soit, toujours avec 200 titres dans mon lecteur, une vingtaine de titres à jouer, en moyenne. Ce qui rallongera un peu mon jogging, finalement…

> n=200
> sqrt(2*n*log(2))
[1] 16.65109
> 1+sqrt(pi*n/2)-1/3+1/12*sqrt(pi/2*n)-4/135/n
[1] 19.8681

Formellement, le premier correspond à une médiane, alors que le second à une espérance. Ce qui explique la différence.
Notons que si mon jogging classique dure la durée de 17 titres, la probabilité d’avoir un jogging deux fois plus long est quand même d’une chance sur 10,

> k=31
> exp(-k*(k-1)/(2*n))
[1] 0.09778344
> sqrt(2*n*log(1/.01))
[1] 42.91932

autrement dit, j’ai une chance sur 100 (ce qui devrait donc arriver une fois dans l’année, en moyenne) de courir pendant 43 chansons… qui vont me paraître très très longues….

1 je passais mon temps l’oreille sur la radio (car j’ai connu les premières radios libres, comme on disait alors), prêt à enregistrer dès qu’une super chanson passait.. je me souviens avoir guetter des jours durant le passage de you spin me around (ici) que mes élèves (qui n’ont pas connu cette époque) ou les cinéphiles connaissent probablement seulement sous la version right round () qui a abondamment samplé le thème. Oui, je suis un dinosaure..

3 thoughts on “Passer des cassettes aux mp3”

  1. k=34 (typo ?) pour avoir un jogging deux fois plus long, ce qui réduit la proba à 1/16.
    Je me demandais si la proba de partir (sans s’y être préparé) pour un quasi-marathon ne serait pas dissuasive, mais en fait le risque est acceptable.
    A 3′ le titre en moyenne, des joggings de 17 titres durent 50′, donc en partant sur l’hypothèse d’une moyenne à 12 km/h (en espérant ne pas être vexant :)), le risque de tomber sur une course 4 fois plus longue descend à 1.13E-5
    Même si tu cours deux fois par semaine, avec une occurrence tous les 850 ans normalement tu es relativement serein 🙂

  2. Le problème peut en outre être perturbé par le fait que certains lecteurs (c’est semble-t-il le cas d’iTunes) peuvent intégrer un facteur “préférence” qui transforme le “vrai” random en un random un peu orienté …

  3. Aller jusqu’à faire des développements limités pour prévoir, en gros, comment éviter une répétition dans un “mode aléatoire”… qui peut s’éviter (*), c’est à la limite du matheux fou ! 😀

    (*) avec un meilleur lecteur, qui propose par exemple des listes de lecture aléatoire plutôt qu’un mode aléatoire

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.