Paradoxe de Bertrand : simulation et comparaison

L’article « Du vocabulaire courant en probabilité à une axiomatisation rigoureuse » de Victor Rabiet, paru sur CultureMath le , expose notamment le paradoxe de Bertrand en probabilités : si on trace au hasard une corde d’un cercle (c’est-à-dire un segment dont les extrémités sont sur le cercle), différentes méthodes de tirage qui peuvent sembler uniformes conduisent à des lois de probabilités différentes sur la longueur de la corde. Plus précisement, la probabilité que cette corde soit plus longue que les côtés du triangle équilatéral inscrit varie selon les méthodes présentées.

Nous simulons ces méthodes ci-dessous, dans l’ordre utilisé par Joseph Bertrand dans son Calcul des probabilités paru en 1889 et accessible sur Gallica :

  1. En choisissant de façon uniforme et indépendante une extrémité puis une direction pour la corde.
  2. En choisissant de façon uniforme et indépendante un diamètre du cercle puis un point sur ce diamètre qui sera le milieu de la corde.
  3. En choisissant le milieu de la corde de façon uniforme dans le disque.

La première méthode est équivalente au choix des extrémités de façon uniforme et indépendante sur le cercle, comme on peut le voir avec la relation 1 + eθ = 2 cos(θ/2) eθ/2, qui illustre également le théorème de l'angle au centre.

Simulations graphiques

Les différences entre les méthodes sont peu visibles sur la représentation d’une seule corde.

En revanche, on voit des différences persistantes d’un tirage à l’autre sur quelques centaines de tracés.

Sur environ 400 tracés de cordes, la première méthode montre des bords un peu plus occupés qu'avec la deuxième méthode. La différence est aussi perceptible avec la représentation des milieux pour un millier de tracés.

La troisième méthode se distingue beaucoup plus rapidement, avec un centre assez dégagé dans la représentation des cordes, et pas d'accumulation visible des milieux au centre du cercle.

Calculs de densité

On peut justifier ces répartition en déterminant la fonction de répartition de la distance du milieu au centre avec chaque méthode. La fonction de densité f associée permet d'en déduire la densité des milieux comme une fonction radiale ρ(r, θ) = 1/r f(r). Quant à la densité g de tracé des cordes, elle peut être déduite de l'espérance de la longueur de l'intersection d'une corde avec un disque de rayon R par 0Rr g(r, θ) dr = 0R 2(R2r2) f(r) dr d'où par dérivation Rg(R, θ) = 20R R/(R2r2) f(r) dr donc g(R, θ) = 1/π 0R 1/(R2r2) f(r) dr.

Dans la première méthode, la probabilité que le milieu soit à une distance inférieure à r du centre vaut 2/π arcsin(r), correspondant à une fonction de densité s'écrivant f1(r) = 2/(π (1 − r2)). La fonction de densité des milieux ρ1(r, θ) = 1/(rπ2 (1 − r2)) confirme les accumulations au centre et au bord du cercle par ses limites infinies en 0 et en 1. Pour la densité des cordes, on trouve enfin g1(R, θ) = 1/π 0R dr/((R2r2) (1 − r2) = 1/π 01 dt/((1 − t2) (1 − R2t2) = 1/π 0π/2 du/(1 − R2 cos2(u)), c'est-à-dire une intégrale elliptique complète de 1re espèce, équivalente en 1 à −1/2 ln(1 − R).

Pour la deuxième méthode, la distance au centre est uniforme par définition donc la fonction de densité des milieux s'écrit ρ2(r, θ) = 1/r, avec encore une limite infinie en 0, correspondant à l'accumulation des milieux au centre. La densité des cordes est effectivement constante : g2(R, θ) = 1/π 0R dr/(R2r2) = 1/π 01 dt/(1 − t2) = 1/2 .

La troisième méthode correspond à une densité des milieux uniforme ρ3(r, θ) = 1/π, donc la fonction de densité de la distance au centre s'écrit f3(r) = 2r. La densité des cordes s'obtient alors par g3(R, θ) = 1/π 0R 2r/(R2r2) dr = 2/π [(R2r2) ]0R = 2R/π, ce qui explique le creux apparent au centre du cercle.

Programmation

Les simulations ci-dessus ont été programmées en Javascript dans un élément SVG pour les tracés de cordes seules puis dans des éléments canvas superposés pour les superpositions de cordes.

function extremites_uniformes(){
    var t=2*Math.PI*Math.random(), u=2*Math.PI*Math.random(); // angles polaires des extrémités
    return[Math.cos(t), Math.sin(t), Math.cos(u), Math.sin(u)]};

function distance_uniforme(){
    var t=2*Math.PI*Math.random(),	// angle polaire du milieu
        c=Math.cos(t), s=Math.sin(t),	// vecteur unitaire vers le milieu
        r=Math.random(),	// distance au centre
        q=Math.sqrt(1-r*r);	// demi-longueur de corde
    return [c*r+s*q,s*r-c*q,c*r-s*q,s*r+c*q]};

function milieu_uniforme(){
    var t=2*Math.PI*Math.random(),	// angle polaire du milieu
        c=Math.cos(t), s=Math.sin(t),	// vecteur unitaire vers le milieu
        u=Math.random(),	// proportion de centres à distance inférieure
        r=Math.sqrt(u), 	// distance au centre
        q=Math.sqrt(1-u);	// demi-longueur de corde
    return [c*r+s*q,s*r-c*q,c*r-s*q,s*r+c*q]};

Extensions

On s'est contenté ici de traiter les trois générations de cordes envisagées par Joseph Bertrand, mais on aurait pu aussi engendrer une corde passant par un point à l'intérieur du disque et avec une direction, ou passant par deux points choisis indépendamment et uniformément à l'intérieur du disque.