• [^] # Re: rand($.) < 1 && ($line = $_) while <>

    Posté par (courriel, site web personnel) . En réponse au message Accès aléatoire à un fichier d'un répertoire. Évalué à 2.

    D'après la FAQ Perl:
    You can find a proof of this method in The Art of Computer Programming, Volume 2, Section 3.4.2, by Donald E. Knuth.
    J'ai mis du temps à comprendre comment ça marche mais ça marche et tous les fichiers ont autant de chance d'être sélectionnés (et sans lire le bouquin en question :op).

    Le 1er à 100% de chance d'être sélectionné, forcément. Le deuxième a une chance sur deux d'être sélectionné donc 50% pour le 1er, 50% pour le 2ème. Le 3ème a 1/3 d'être pris donc 1/3 pour le 3ème, (2/3)*(1/2) = 1/3 pour le 2ème et pareil pour le 3ème et ainsi de suite.

    Doit y avoir moyen de démontrer ça mathématiquement par récurrence mais je suis en vacances là :op

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.