Le paradoxe de Bertrand : que veut dire choisir au hasard ? Grand Oral · mathématiques, humanités, littérature et philosophie Un support de connaissances pour construire sa propre question

← Tous les textes du Grand Oral

MathsHLP

On trace un cercle, on y inscrit un triangle équilatéral, puis on choisit une corde « au hasard ». Quelle est la probabilité que cette corde soit plus longue qu'un côté du triangle ? La question paraît simple. Pourtant, trois raisonnements tous corrects donnent trois réponses différentes : $\dfrac{1}{3}$, $\dfrac{1}{2}$ et $\dfrac{1}{4}$.

C'est le paradoxe de Bertrand, publié en 1889 par le mathématicien français Joseph Bertrand. Il ne contient aucune erreur de calcul : il montre que l'expression « choisir au hasard » n'a pas de sens tant qu'on n'a pas dit comment on choisit. Autrement dit, une probabilité n'existe pas sans un modèle, une loi de probabilité, que l'on choisit.

Ce texte reprend les trois raisonnements avec les mathématiques de terminale : géométrie et trigonométrie, étude de fonction par la dérivée, probabilités et fréquences, simulation en Python. Il ne propose pas de Grand Oral tout fait : à chacun d'y choisir une direction et d'y construire sa question.

Sommaire
  1. L'énoncé du paradoxe
  2. Le côté du triangle équilatéral
  3. Raisonnement n°1 : une extrémité, puis l'autre
  4. Raisonnement n°2 : un rayon, puis un point du rayon
  5. Raisonnement n°3 : le milieu de la corde
  6. Simuler les trois méthodes
  7. Un quatrième raisonnement, et la loi des longueurs
  8. Joseph Bertrand
  9. Que veut dire « choisir au hasard » ?
  10. Des directions pour construire sa question
L'énoncé du paradoxe

On considère un cercle $\mathscr{C}$ de rayon $1$, dans lequel on inscrit un triangle équilatéral. On cherche la probabilité qu'une corde choisie au hasard ait une longueur supérieure à celle d'un côté du triangle.

Rappelons qu'une corde est un segment qui joint deux points du cercle. La plus longue des cordes est un diamètre, de longueur $2$.

var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var cercle = board.create('circle', [[0, 0], 1], {strokeColor: '#000', strokeWidth: 1.5, fixed: true, highlight: false}); var T = [[0, 1], [-0.8660254, -0.5], [0.8660254, -0.5]]; board.create('polygon', T, {fillOpacity: 0.04, fillColor: '#455a64', borders: {strokeColor: '#455a64', strokeWidth: 1}, vertices: {visible: false}, fixed: true, highlight: false}); var D = board.create('glider', [0.866, 0.5, cercle], {name: '', size: 5, color: '#1565c0'}); var E = board.create('glider', [-0.707, 0.707, cercle], {name: '', size: 5, color: '#1565c0'}); function lg() { return Math.sqrt(Math.pow(D.X() - E.X(), 2) + Math.pow(D.Y() - E.Y(), 2)); } board.create('segment', [D, E], {strokeWidth: 3, highlight: false, fixed: true, strokeColor: function () { return lg() > Math.sqrt(3) ? '#1565c0' : '#c62828'; }}); board.create('text', [-1.1, -1.12, function () { return 'longueur de la corde : ' + lg().toFixed(3).replace('.', ',') + (lg() > Math.sqrt(3) ? ' (plus longue)' : ' (plus courte)'); }], opt); board.create('text', [-1.1, -1.24, 'côté du triangle : √3 ≈ 1,732'], opt); Déplacer les extrémités de la corde : elle devient bleue quand elle est plus longue que le côté du triangle, rouge sinon.

Tout le problème est dans les mots « au hasard ». Il y a une infinité de cordes, et l'on ne peut pas les compter comme on compte les faces d'un dé. Pour parler de probabilité, il faut décrire une manière de tirer une corde. Bertrand en propose trois, toutes naturelles.

Le côté du triangle équilatéral Côté du triangle

Un triangle équilatéral inscrit dans un cercle de rayon $1$ a des côtés de longueur $\sqrt{3}$.

On considère le cercle $\mathscr{C}$ de centre $O$ et de rayon $1$, et un triangle équilatéral $ABC$ inscrit dans $\mathscr{C}$. On note $I$ le milieu de $[AB]$.

var opt = {fontSize: 13, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var trait = {strokeColor: '#000', strokeWidth: 1.2, fixed: true, highlight: false}; var poin = {strokeColor: '#000', fillColor: '#000', size: 2, fixed: true, highlight: false, withLabel: false}; board.create('circle', [[0, 0], 1], {strokeColor: '#000', strokeWidth: 1.2, fixed: true, highlight: false}); var O = board.create('point', [0, 0], poin), A = board.create('point', [0, 1], poin); var B = board.create('point', [-0.8660254, -0.5], poin), C = board.create('point', [0.8660254, -0.5], poin); board.create('segment', [A, B], trait); board.create('segment', [B, C], trait); board.create('segment', [C, A], trait); var tir = {strokeColor: '#455a64', strokeWidth: 1, dash: 2, fixed: true, highlight: false}; board.create('segment', [O, A], tir); board.create('segment', [O, B], tir); board.create('line', [O, C], tir); var I = board.create('point', [-0.4330127, 0.25], {strokeColor: '#1565c0', fillColor: '#1565c0', size: 2, fixed: true, highlight: false, withLabel: false}); board.create('text', [0.06, -0.12, 'O'], opt); board.create('text', [-0.05, 1.13, 'A'], opt); board.create('text', [-1.05, -0.62, 'B'], opt); board.create('text', [0.92, -0.62, 'C'], opt); board.create('text', [-0.56, 0.37, 'I'], {fontSize: 13, useKatex: false, parse: false, fixed: true, highlight: false, color: '#1565c0'}); board.create('text', [-1.25, 1.15, 'C (cercle)'], opt); Le triangle équilatéral $ABC$ inscrit dans le cercle de centre $O$ et de rayon $1$ ; $I$ est le milieu de $[AB]$, sur la droite $(OC)$. Démonstration

Étape 1 : les angles. Dans un triangle équilatéral, les bissectrices, hauteurs, médiatrices et médianes sont confondues, et le centre $O$ du cercle circonscrit est sur chacune d'elles. La droite $(AO)$ est donc la bissectrice de l'angle de $60^\circ$ en $A$. Dans le triangle $OAB$, isocèle en $O$ (car $OA = OB = 1$), on a

$$\widehat{BAO} = \frac{60^\circ}{2} = 30^\circ, \qquad \widehat{OBA} = 30^\circ,$$

et

$$\widehat{AOB} = 180^\circ - 2 \times 30^\circ = 120^\circ.$$

Étape 2 : le triangle rectangle. La droite $(OC)$ est un axe de symétrie du triangle $ABC$, et elle coupe $[AB]$ en son milieu $I$, perpendiculairement. Le triangle $OAI$ est donc rectangle en $I$, et la trigonométrie du collège donne

$$\begin{aligned} AI &= AO \times \cos\left(\widehat{IAO}\right) \\ &= 1 \times \cos(30^\circ) = \frac{\sqrt{3}}{2}. \end{aligned}$$

Étape 3 : conclusion. Comme $I$ est le milieu de $[AB]$,

$$AB = 2\,AI = 2 \times \frac{\sqrt{3}}{2} = \sqrt{3}.$$

Toujours dans le triangle $OAI$, on obtient la distance du centre au côté :

$$\begin{aligned} OI &= OA \times \sin\left(\widehat{IAO}\right) \\ &= 1 \times \sin(30^\circ) = \frac{1}{2}. \end{aligned}$$

Ce nombre servira deux fois : une corde est plus longue que le côté du triangle exactement quand elle passe à une distance du centre inférieure à $\dfrac{1}{2}$. En effet, une corde située à la distance $d$ du centre a pour longueur $2\sqrt{1 - d^2}$ (théorème de Pythagore dans le demi-triangle), et

$$\begin{aligned} 2\sqrt{1 - d^2} > \sqrt{3} &\iff 1 - d^2 > \frac{3}{4} \\ &\iff d < \frac{1}{2}. \end{aligned}$$
Raisonnement n°1 : une extrémité, puis l'autre

On choisit d'abord la première extrémité $A$ de la corde sur le cercle. On construit le triangle équilatéral $ABC$ dont l'un des sommets est cette extrémité. Le cercle est alors partagé en trois arcs, $\overset{\frown}{AB}$, $\overset{\frown}{BC}$ et $\overset{\frown}{CA}$, de même longueur $\dfrac{2\pi}{3}$.

On choisit ensuite la seconde extrémité $M$ au hasard sur le cercle, chaque arc de même longueur ayant la même chance de la recevoir. Seul l'arc $\overset{\frown}{BC}$, opposé à $A$, donne une corde $[AM]$ plus longue que le côté du triangle. Comme cet arc représente le tiers du cercle, la probabilité cherchée est

$$p_1 = \frac{1}{3}.$$ var opt = {fontSize: 13, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var cercle = board.create('circle', [[0, 0], 1], {strokeColor: '#000', strokeWidth: 1, fixed: true, highlight: false}); var O = board.create('point', [0, 0], {visible: false, fixed: true}); var pc = {visible: false, fixed: true}; var A = board.create('point', [0, 1], pc), B = board.create('point', [-0.8660254, -0.5], pc), C = board.create('point', [0.8660254, -0.5], pc); board.create('arc', [O, A, B], {strokeColor: 'rgba(198,40,40,0.35)', strokeWidth: 8, fixed: true, highlight: false}); board.create('arc', [O, B, C], {strokeColor: 'rgba(21,101,192,0.35)', strokeWidth: 8, fixed: true, highlight: false}); board.create('arc', [O, C, A], {strokeColor: 'rgba(198,40,40,0.35)', strokeWidth: 8, fixed: true, highlight: false}); var tr = {strokeColor: '#455a64', strokeWidth: 1, dash: 2, fixed: true, highlight: false}; board.create('segment', [A, B], tr); board.create('segment', [B, C], tr); board.create('segment', [C, A], tr); board.create('point', [0, 1], {name: '', size: 3, color: '#000', fixed: true, highlight: false}); var M = board.create('glider', [-0.707, -0.707, cercle], {name: '', size: 5, color: '#1565c0'}); function lg() { return Math.sqrt(M.X() * M.X() + Math.pow(M.Y() - 1, 2)); } board.create('segment', [A, M], {strokeWidth: 3, fixed: true, highlight: false, strokeColor: function () { return lg() > Math.sqrt(3) ? '#1565c0' : '#c62828'; }}); board.create('text', [-0.06, 1.15, 'A'], opt); board.create('text', [-1.1, -0.66, 'B'], opt); board.create('text', [0.98, -0.66, 'C'], opt); board.create('text', [-1.15, -1.18, function () { return 'AM = ' + lg().toFixed(3).replace('.', ',') + (lg() > Math.sqrt(3) ? ' > √3' : ' < √3'); }], opt); L'extrémité $A$ est fixée. Déplacer $M$ : la corde $[AM]$ est plus longue que le côté (en bleu) seulement quand $M$ est sur l'arc bleu $\overset{\frown}{BC}$, le tiers du cercle. Le même résultat par la trigonométrie

Plaçons le cercle dans un repère orthonormé de centre $O$, avec $A(1 ; 0)$, et repérons l'autre extrémité par l'angle $\theta \in [0 ; 2\pi[$ : $M(\cos\theta ; \sin\theta)$. Tirer $M$ au hasard sur le cercle, avec la même chance pour deux arcs de même longueur, revient à tirer $\theta$ au hasard dans $[0 ; 2\pi[$ de façon uniforme : c'est ce que fait l'instruction random()*2*pi en Python.

var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var ax = {strokeColor: '#455a64', strokeWidth: 1, fixed: true, highlight: false, lastArrow: true}; board.create('segment', [[-1.3, 0], [1.3, 0]], ax); board.create('segment', [[0, -1.3], [0, 1.3]], ax); var cercle = board.create('circle', [[0, 0], 1], {strokeColor: '#000', strokeWidth: 1, fixed: true, highlight: false}); var M = board.create('glider', [0.6, 0.8, cercle], {name: '', size: 5, color: '#1565c0'}); var pt = {strokeColor: '#455a64', strokeWidth: 1, dash: 2, fixed: true, highlight: false}; board.create('segment', [M, [function () { return M.X(); }, 0]], pt); board.create('segment', [M, [0, function () { return M.Y(); }]], pt); board.create('segment', [[0, 0], M], {strokeColor: '#1565c0', strokeWidth: 1.5, fixed: true, highlight: false}); function th() { var t = Math.atan2(M.Y(), M.X()); return t < 0 ? t + 2 * Math.PI : t; } board.create('curve', [function (t) { return 0.28 * Math.cos(t); }, function (t) { return 0.28 * Math.sin(t); }, 0, function () { return th(); }], {strokeColor: '#c62828', strokeWidth: 1.5, highlight: false}); board.create('text', [1.04, 0.1, 'I'], opt); board.create('text', [0.06, 1.12, 'J'], opt); board.create('text', [-0.16, -0.12, 'O'], opt); board.create('text', [-1.3, -1.2, function () { return 'θ ≈ ' + (th() * 180 / Math.PI).toFixed(0) + '° M(' + M.X().toFixed(2).replace('.', ',') + ' ; ' + M.Y().toFixed(2).replace('.', ',') + ')'; }], opt); Sur le cercle trigonométrique, un point $M$ est entièrement déterminé par un seul nombre, l'angle $\theta$ : ses coordonnées sont $\cos\theta$ et $\sin\theta$.

La longueur de la corde est alors

$$AM = \sqrt{(1 - \cos\theta)^2 + (0 - \sin\theta)^2}.$$

En développant, puis en utilisant $\cos^2\theta + \sin^2\theta = 1$ :

$$\begin{aligned} AM &= \sqrt{1 - 2\cos\theta + \cos^2\theta + \sin^2\theta} \\ &= \sqrt{2 - 2\cos\theta}. \end{aligned}$$

La corde est plus longue que le côté du triangle quand

$$\begin{aligned} \sqrt{2 - 2\cos\theta} > \sqrt{3} &\iff 2 - 2\cos\theta > 3 \\ &\iff \cos\theta < -\frac{1}{2}. \end{aligned}$$

Sur le cercle trigonométrique, $\cos\theta < -\frac{1}{2}$ pour $\theta \in \left]\dfrac{2\pi}{3} ; \dfrac{4\pi}{3}\right[$, un intervalle de longueur $\dfrac{2\pi}{3}$, le tiers de $2\pi$. On retrouve $p_1 = \dfrac{1}{3}$.

Raisonnement n°2 : un rayon, puis un point du rayon

On choisit au hasard un rayon $[OP]$ du cercle $\mathscr{C}$, puis un point $H$ au hasard sur ce rayon, et l'on trace la corde $[MN]$ qui coupe le rayon perpendiculairement en $H$.

On considère alors le triangle équilatéral $ABC$ inscrit dans $\mathscr{C}$ tel que $(BC)$ soit parallèle à $(MN)$, et l'on note $I$ l'intersection de $(OP)$ et de $(BC)$. D'après la remarque précédente, $OI = \dfrac{1}{2}$.

var opt = {fontSize: 13, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var cercle = board.create('circle', [[0, 0], 1], {strokeColor: '#000', strokeWidth: 1, fixed: true, highlight: false}); var P = board.create('glider', [0.0, -1, cercle], {name: '', size: 5, color: '#455a64'}); var O = board.create('point', [0, 0], {visible: false, fixed: true}); var rayon = board.create('segment', [O, P], {strokeColor: '#455a64', strokeWidth: 1.5, fixed: true, highlight: false}); var H = board.create('glider', [0, -0.75, rayon], {name: '', size: 5, color: '#1565c0'}); function u() { var r = Math.sqrt(P.X() * P.X() + P.Y() * P.Y()); return [P.X() / r, P.Y() / r]; } function d() { return Math.sqrt(H.X() * H.X() + H.Y() * H.Y()); } function pt(a, b) { return function () { var w = u(); return a * w[0] - b * w[1]; }; } function ptY(a, b) { return function () { var w = u(); return a * w[1] + b * w[0]; }; } var tr = {strokeColor: '#455a64', strokeWidth: 1, dash: 2, fixed: true, highlight: false}; var hv = {visible: false, fixed: true}; var A = board.create('point', [pt(-1, 0), ptY(-1, 0)], hv), B = board.create('point', [pt(0.5, -0.8660254), ptY(0.5, -0.8660254)], hv), C = board.create('point', [pt(0.5, 0.8660254), ptY(0.5, 0.8660254)], hv); board.create('segment', [A, B], tr); board.create('segment', [B, C], tr); board.create('segment', [C, A], tr); var I = board.create('point', [pt(0.5, 0), ptY(0.5, 0)], {size: 2, color: '#455a64', name: '', fixed: true, highlight: false}); function demi() { return Math.sqrt(Math.max(0, 1 - d() * d())); } var M = board.create('point', [function () { var w = u(); return H.X() - demi() * w[1]; }, function () { var w = u(); return H.Y() + demi() * w[0]; }], hv); var N = board.create('point', [function () { var w = u(); return H.X() + demi() * w[1]; }, function () { var w = u(); return H.Y() - demi() * w[0]; }], hv); board.create('segment', [M, N], {strokeWidth: 3, fixed: true, highlight: false, strokeColor: function () { return d() < 0.5 ? '#1565c0' : '#c62828'; }}); board.create('text', [function () { return 1.13 * u()[0] - 0.05; }, function () { return 1.13 * u()[1]; }, 'P'], opt); board.create('text', [function () { return 0.38 * u()[0] - 0.1 * u()[1]; }, function () { return 0.38 * u()[1] + 0.1 * u()[0]; }, 'I'], opt); board.create('text', [-1.2, -1.33, function () { return 'OH = ' + d().toFixed(2).replace('.', ',') + (d() < 0.5 ? ' < 1/2 : corde plus longue' : ' > 1/2 : corde plus courte'); }], opt); board.create('text', [-1.2, -1.47, function () { return 'MN = ' + (2 * demi()).toFixed(3).replace('.', ','); }], opt); Le point gris $P$ choisit le rayon, le point bleu $H$ glisse sur ce rayon. La corde perpendiculaire en $H$ est bleue (plus longue que le côté) quand $H$ est sur $[OI]$, la moitié du rayon.

La corde $[MN]$ est plus longue que $[BC]$ exactement lorsque $H$ est plus proche du centre que $I$, c'est-à-dire lorsque $H$ est sur le segment $[OI]$ de longueur $\dfrac{1}{2}$, à l'intérieur du rayon $[OP]$ de longueur $1$. Si le point $H$ est choisi au hasard sur le rayon, deux segments de même longueur ayant la même chance de le recevoir, la probabilité cherchée est

$$p_2 = \frac{1/2}{1} = \frac{1}{2}.$$

Le choix du rayon ne change rien : par symétrie, le résultat est le même pour tous les rayons.

Raisonnement n°3 : le milieu de la corde

Soit $H$ un point choisi au hasard à l'intérieur du disque ouvert délimité par $\mathscr{C}$. On construit la corde $[MN]$ dont $H$ est le milieu.

Le triangle $OMN$ est isocèle en $O$, et $(OH)$ est une médiane de ce triangle : c'est donc aussi une hauteur, et les droites $(OH)$ et $(MN)$ sont perpendiculaires. On construit le triangle équilatéral $ABC$ tel que $(BC)$ soit parallèle à $(MN)$. La droite $(OH)$ est perpendiculaire à $(BC)$ ; comme le triangle $OBC$ est isocèle en $O$, le point d'intersection $I$ de $(OH)$ et $(BC)$, pied de la hauteur issue de $O$, est aussi le milieu de $[BC]$. D'après la remarque, $OI = \dfrac{1}{2}$.

La corde $[MN]$ est plus longue que $[BC]$ exactement lorsque $OH < \dfrac{1}{2}$, c'est-à-dire lorsque son milieu $H$ est dans le disque de centre $O$ et de rayon $\dfrac{1}{2}$.

var opt = {fontSize: 13, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; board.create('circle', [[0, 0], 1], {strokeColor: '#000', strokeWidth: 1, fixed: true, highlight: false}); board.create('circle', [[0, 0], 0.5], {strokeColor: '#1565c0', strokeWidth: 1, fillColor: '#1565c0', fillOpacity: 0.12, fixed: true, highlight: false}); var H = board.create('point', [0.35, -0.55], {name: '', size: 5, color: '#1565c0'}); H.on('drag', function () { var r = Math.sqrt(H.X() * H.X() + H.Y() * H.Y()); if (r > 0.97) { H.setPosition(JXG.COORDS_BY_USER, [0.97 * H.X() / r, 0.97 * H.Y() / r]); } }); function d() { return Math.sqrt(H.X() * H.X() + H.Y() * H.Y()); } function u() { var r = d(); return r < 1e-6 ? [0, -1] : [H.X() / r, H.Y() / r]; } function demi() { return Math.sqrt(Math.max(0, 1 - d() * d())); } var hv = {visible: false, fixed: true}; var M = board.create('point', [function () { return H.X() - demi() * u()[1]; }, function () { return H.Y() + demi() * u()[0]; }], hv); var N = board.create('point', [function () { return H.X() + demi() * u()[1]; }, function () { return H.Y() - demi() * u()[0]; }], hv); board.create('segment', [M, N], {strokeWidth: 3, fixed: true, highlight: false, strokeColor: function () { return d() < 0.5 ? '#1565c0' : '#c62828'; }}); board.create('segment', [[0, 0], H], {strokeColor: '#455a64', strokeWidth: 1, dash: 2, fixed: true, highlight: false}); board.create('point', [0, 0], {name: '', size: 2, color: '#000', fixed: true, highlight: false}); board.create('text', [0.04, 0.1, 'O'], opt); board.create('text', [-1.2, -1.2, function () { return 'OH = ' + d().toFixed(2).replace('.', ',') + (d() < 0.5 ? ' : H dans le petit disque' : ' : H hors du petit disque'); }], opt); board.create('text', [-1.2, -1.34, function () { return 'MN = ' + (2 * demi()).toFixed(3).replace('.', ','); }], opt); Déplacer le milieu $H$ de la corde. La corde est plus longue que le côté du triangle (en bleu) exactement quand $H$ est dans le disque bleu de rayon $\frac{1}{2}$.

Cette fois, le hasard porte sur un point d'une surface : si deux régions de même aire ont la même chance de recevoir $H$, la probabilité est le quotient des aires du petit disque et du grand disque :

$$p_3 = \frac{\pi \times \left(\frac{1}{2}\right)^2}{\pi \times 1^2} = \frac{1}{4}.$$

La figure ressemble beaucoup à celle du raisonnement n°2. Mais les constructions ne se font pas dans le même ordre, et les objets tirés au hasard ne sont pas les mêmes : un point d'un segment dans un cas, un point d'un disque dans l'autre. Dans le n°3, un point $H$ loin du centre a beaucoup plus de place pour tomber (une couronne près du bord a une grande aire) qu'un point proche du centre : les cordes courtes sont favorisées, d'où une probabilité plus faible.

MéthodeCe qu'on tire au hasardProbabilité
n°1deux points du cercle$\dfrac{1}{3}$
n°2un rayon, puis un point de ce rayon$\dfrac{1}{2}$
n°3le milieu de la corde dans le disque$\dfrac{1}{4}$
Simuler les trois méthodes

Les trois réponses ne sont pas des opinions : chacune correspond à une expérience qu'on peut réaliser. Pour le vérifier, on fait tirer des cordes par la machine, selon chacune des trois méthodes, et l'on compte la fréquence des cordes plus longues que $\sqrt{3}$.

var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var bopt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false}; board.create('circle', [[0, 0], 1], {strokeColor: '#000', strokeWidth: 1, fixed: true, highlight: false}); var meth = 1, n = 0, ok = 0, bx = [], by = [], rx = [], ry = []; var bleu = board.create('curve', [[0], [0]], {strokeColor: 'rgba(21,101,192,0.45)', strokeWidth: 1, highlight: false}); var rouge = board.create('curve', [[0], [0]], {strokeColor: 'rgba(198,40,40,0.35)', strokeWidth: 1, highlight: false}); bleu.updateDataArray = function () { this.dataX = bx; this.dataY = by; }; rouge.updateDataArray = function () { this.dataX = rx; this.dataY = ry; }; function corde() { var a, b, d, t, x1, y1, x2, y2, h; if (meth === 1) { a = 2 * Math.PI * Math.random(); b = 2 * Math.PI * Math.random(); x1 = Math.cos(a); y1 = Math.sin(a); x2 = Math.cos(b); y2 = Math.sin(b); } else { t = 2 * Math.PI * Math.random(); if (meth === 2) { d = Math.random(); } else { do { x1 = 2 * Math.random() - 1; y1 = 2 * Math.random() - 1; } while (x1 * x1 + y1 * y1 >= 1); d = Math.sqrt(x1 * x1 + y1 * y1); t = Math.atan2(y1, x1); } h = Math.sqrt(1 - d * d); x1 = d * Math.cos(t) - h * Math.sin(t); y1 = d * Math.sin(t) + h * Math.cos(t); x2 = d * Math.cos(t) + h * Math.sin(t); y2 = d * Math.sin(t) - h * Math.cos(t); } var L = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); n++; if (L > Math.sqrt(3)) { ok++; bx.push(x1, x2, NaN); by.push(y1, y2, NaN); } else { rx.push(x1, x2, NaN); ry.push(y1, y2, NaN); } } function vider() { n = 0; ok = 0; bx = []; by = []; rx = []; ry = []; } function tirer(k) { for (var i = 0; i < k; i++) { corde(); } board.update(); } board.create('button', [-1.15, 1.42, 'Méthode 1', function () { meth = 1; vider(); board.update(); }], bopt); board.create('button', [-0.38, 1.42, 'Méthode 2', function () { meth = 2; vider(); board.update(); }], bopt); board.create('button', [0.39, 1.42, 'Méthode 3', function () { meth = 3; vider(); board.update(); }], bopt); board.create('button', [-1.15, -1.25, '+ 10 cordes', function () { tirer(10); }], bopt); board.create('button', [-0.3, -1.25, '+ 200 cordes', function () { tirer(200); }], bopt); var theo = ['1/3 ≈ 0,333', '1/2 = 0,5', '1/4 = 0,25']; board.create('text', [-1.15, -1.5, function () { return 'Méthode ' + meth + ' : ' + n + ' cordes, ' + ok + ' plus longues que √3'; }], opt); board.create('text', [-1.15, -1.65, function () { return 'fréquence : ' + (n ? (ok / n).toFixed(3).replace('.', ',') : '—') + ' théorie : ' + theo[meth - 1]; }], opt); Choisir une méthode, puis tirer des cordes. En bleu les cordes plus longues que le côté du triangle, en rouge les autres. Avec la méthode 3, on voit un « trou » au centre : les cordes passent rarement près du centre.

Le programme suivant fait la même chose en Python, avec $10\,000$ cordes pour chaque méthode. Les deux premiers programmes du texte d'origine (deux angles tirés au hasard, puis une extrémité fixée en $(1 ; 0)$) correspondent à la méthode n°1.

from math import cos, sin, sqrt, pi from random import random def methode1(): a = random() * 2 * pi # deux points du cercle b = random() * 2 * pi return sqrt((cos(a) - cos(b))**2 + (sin(a) - sin(b))**2) def methode2(): d = random() # un point du rayon : distance au centre return 2 * sqrt(1 - d * d) def methode3(): while True: # un point du disque (on rejette ceux du carré hors du disque) x = 2 * random() - 1 y = 2 * random() - 1 if x * x + y * y < 1: return 2 * sqrt(1 - (x * x + y * y)) n = 10000 for nom, tirage in [("méthode 1", methode1), ("méthode 2", methode2), ("méthode 3", methode3)]: compte = 0 for i in range(n): if tirage() > sqrt(3): compte = compte + 1 print(nom, ":", compte / n) Ce que dit la loi des grands nombres

Pour une méthode donnée, notons $p$ la probabilité qu'une corde soit plus longue que $\sqrt{3}$, et $S$ le nombre de telles cordes parmi $n$ tirages indépendants. $S$ suit la loi binomiale $\mathcal{B}(n ; p)$, et la fréquence $F = \dfrac{S}{n}$ a pour espérance $p$ et pour variance $\dfrac{p(1-p)}{n}$. L'inégalité de Bienaymé-Tchebychev donne, pour tout $\delta > 0$,

$$P\left(|F - p| \geqslant \delta\right) \leqslant \frac{p(1-p)}{n\,\delta^2}.$$

Comme $p(1 - p) \leqslant \dfrac{1}{4}$ pour tout $p$, avec $n = 10\,000$ et $\delta = 0{,}02$ :

$$\begin{aligned} P\left(|F - p| \geqslant 0{,}02\right) &\leqslant \frac{0{,}25}{10\,000 \times 0{,}0004} \\ &\leqslant 0{,}0625. \end{aligned}$$

Il y a donc au moins $93{,}75\,\%$ de chances que chaque fréquence affichée soit à moins de $0{,}02$ de la probabilité théorique. Plus $n$ est grand, plus il est probable que la fréquence soit proche de $p$ : les simulations permettent de distinguer nettement $0{,}25$, $0{,}333$ et $0{,}5$. Les trois réponses sont donc toutes « vraies », chacune pour son expérience.

Un quatrième raisonnement, et la loi des longueurs Un raisonnement qu'on trouve souvent

Les trois raisonnements précédents sont ceux de Joseph Bertrand. On en trouve souvent un quatrième : une corde a une longueur comprise entre $0$ et $2$ ; si l'on suppose les longueurs réparties uniformément dans $[0 ; 2]$, la probabilité qu'une longueur soit inférieure à $\sqrt{3}$ est $\dfrac{\sqrt{3}}{2}$, et celle de l'événement contraire est

$$1 - \frac{\sqrt{3}}{2} \approx 0{,}134.$$

Ce calcul n'est pas faux en lui-même, mais l'hypothèse de départ ne correspond à aucune des trois constructions : dans aucune d'elles les longueurs ne sont réparties uniformément. Étudions-le dans le cas de la méthode n°1.

La longueur d'une corde, fonction de l'angle

On a vu qu'avec $A(1 ; 0)$ et $M(\cos\theta ; \sin\theta)$, la longueur de la corde est $\ell(\theta) = \sqrt{2 - 2\cos\theta}$. Étudions cette fonction sur $[0 ; \pi]$.

$\ell$ est strictement croissante sur $[0 ; \pi]$, de $0$ à $2$

Étape 1. On pose $u(\theta) = 2 - 2\cos\theta$, dérivable, avec $u'(\theta) = 2\sin\theta$. Sur $]0 ; \pi]$, $u(\theta) > 0$, donc $\ell = \sqrt{u}$ y est dérivable, et la formule de dérivation de $\sqrt{u}$ donne

$$\ell'(\theta) = \frac{u'(\theta)}{2\sqrt{u(\theta)}} = \frac{\sin\theta}{\sqrt{2 - 2\cos\theta}}.$$

Étape 2. Sur $]0 ; \pi[$, $\sin\theta > 0$, donc $\ell'(\theta) > 0$ : $\ell$ est strictement croissante sur $[0 ; \pi]$.

Étape 3. $\ell(0) = \sqrt{0} = 0$ et $\ell(\pi) = \sqrt{2 + 2} = 2$. De plus, $\ell(2\pi - \theta) = \ell(\theta)$ car $\cos(2\pi - \theta) = \cos\theta$ : la courbe est symétrique par rapport à la droite d'équation $\theta = \pi$.

Avec la formule $\cos\theta = 1 - 2\sin^2\frac{\theta}{2}$, on obtient aussi $\ell(\theta) = 2\sin\dfrac{\theta}{2}$ sur $[0 ; 2\pi]$ : la longueur d'une corde est le double du sinus de la moitié de l'angle au centre, la relation qu'utilisaient déjà les astronomes grecs dans leurs tables de cordes.

var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var ax = {strokeColor: '#455a64', strokeWidth: 1, fixed: true, highlight: false, lastArrow: true}; board.create('segment', [[0, 0], [6.6, 0]], ax); board.create('segment', [[0, 0], [0, 2.45]], ax); var lab = [[Math.PI / 2, 'π/2'], [Math.PI, 'π'], [3 * Math.PI / 2, '3π/2'], [2 * Math.PI, '2π']]; for (var i = 0; i < 4; i++) { board.create('segment', [[lab[i][0], 0], [lab[i][0], -0.07]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('text', [lab[i][0] - 0.2, -0.28, lab[i][1]], opt); } board.create('text', [-0.35, 1, '1'], opt); board.create('text', [-0.35, 2, '2'], opt); board.create('segment', [[0, 1], [-0.07, 1]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('segment', [[0, 2], [-0.07, 2]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('segment', [[0, Math.sqrt(3)], [6.4, Math.sqrt(3)]], {strokeColor: '#1565c0', strokeWidth: 1, dash: 2, fixed: true, highlight: false}); board.create('text', [5.45, 1.92, 'ℓ = √3'], {fontSize: 12, useKatex: false, parse: false, fixed: true, highlight: false, color: '#1565c0'}); board.create('functiongraph', [function (t) { return Math.sqrt(2 - 2 * Math.cos(t)); }, 0, 2 * Math.PI], {strokeColor: '#c62828', strokeWidth: 2, highlight: false}); board.create('segment', [[2 * Math.PI / 3, 0], [4 * Math.PI / 3, 0]], {strokeColor: '#1565c0', strokeWidth: 5, fixed: true, highlight: false}); board.create('text', [6.25, 0.2, 'θ'], opt); La longueur $\ell(\theta) = \sqrt{2 - 2\cos\theta}$ de la corde $[AM]$ en fonction de l'angle. Elle dépasse $\sqrt{3}$ pour $\theta$ entre $\frac{2\pi}{3}$ et $\frac{4\pi}{3}$ (en bleu sur l'axe), le tiers de l'intervalle.

La courbe est très plate près de son maximum : un grand intervalle d'angles autour de $\pi$ donne des longueurs proches de $2$. C'est pourquoi les longueurs ne sont pas réparties uniformément : les grandes cordes sont favorisées.

La fonction de répartition des longueurs

Notons $X$ la longueur d'une corde tirée par la méthode n°1. Par symétrie, on peut se limiter à un angle $\theta$ uniforme dans $[0 ; \pi]$. Pour une longueur $x$ de $[0 ; 2]$, comme $\ell$ est croissante, $X \leqslant x$ équivaut à $\theta \leqslant \theta_x$, où $\theta_x$ est l'unique angle de $[0 ; \pi]$ tel que $\ell(\theta_x) = x$, c'est-à-dire

$$\begin{aligned} &\sqrt{2 - 2\cos\theta_x} = x \\ \iff\ &2 - 2\cos\theta_x = x^2 \\ \iff\ &\cos\theta_x = 1 - \frac{x^2}{2}. \end{aligned}$$

L'angle de $[0 ; \pi]$ dont le cosinus vaut $c$ se note $\arccos(c)$ (la fonction « arc cosinus », réciproque de la fonction cosinus sur $[0 ; \pi]$, n'est pas au programme mais toutes les calculatrices la donnent). Comme $\theta$ est uniforme sur $[0 ; \pi]$,

$$\begin{aligned} F_1(x) &= P(X \leqslant x) = \frac{\theta_x}{\pi} \\ &= \frac{1}{\pi}\arccos\left(1 - \frac{x^2}{2}\right). \end{aligned}$$

Par exemple, pour $x = \sqrt{3}$, $\cos\theta_x = 1 - \dfrac{3}{2} = -\dfrac{1}{2}$, donc $\theta_x = \dfrac{2\pi}{3}$ et $F_1(\sqrt{3}) = \dfrac{2}{3}$ : on retrouve $P(X > \sqrt{3}) = \dfrac{1}{3}$. De même $F_1(1) = \dfrac{1}{\pi} \times \dfrac{\pi}{3} = \dfrac{1}{3}$, donc $P(1 \leqslant X \leqslant 2) = \dfrac{2}{3}$ : il est deux fois plus probable qu'une corde mesure plus de $1$ que moins de $1$. Et, à la calculatrice,

$$\begin{aligned} &P(1{,}9 \leqslant X \leqslant 2) = 1 - F_1(1{,}9) \\ &= 1 - \frac{1}{\pi}\arccos\left(1 - \frac{1{,}9^2}{2}\right) \\ &\approx 0{,}202. \end{aligned}$$

Un cinquième des cordes mesure plus de $1{,}9$, alors que l'intervalle $[1{,}9 ; 2]$ ne représente qu'un vingtième de $[0 ; 2]$.

Pour les deux autres méthodes, le calcul est plus simple, car on tire directement la distance $d$ de la corde au centre, et $X = 2\sqrt{1 - d^2}$ : $X \leqslant x$ équivaut à $d \geqslant d_x$ avec $d_x = \sqrt{1 - \frac{x^2}{4}}$.

  • Méthode n°2 : $d$ est uniforme sur $[0 ; 1]$, donc $F_2(x) = P(d \geqslant d_x) = 1 - \sqrt{1 - \frac{x^2}{4}}$.
  • Méthode n°3 : $d \geqslant d_x$ signifie que le milieu est hors du disque de rayon $d_x$, donc $F_3(x) = 1 - \dfrac{\pi d_x^2}{\pi} = \dfrac{x^2}{4}$.

On retrouve $1 - F_2(\sqrt{3}) = \sqrt{\frac{1}{4}} = \frac{1}{2}$ et $1 - F_3(\sqrt{3}) = 1 - \frac{3}{4} = \frac{1}{4}$.

var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var bopt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false}; var ax = {strokeColor: '#455a64', strokeWidth: 1, fixed: true, highlight: false, lastArrow: true}; board.create('segment', [[0, 0], [2.12, 0]], ax); board.create('segment', [[0, 0], [0, 1.12]], ax); for (var t = 0.5; t <= 2; t += 0.5) { board.create('segment', [[t, 0], [t, -0.02]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('text', [t - 0.05, -0.07, String(t).replace('.', ',')], opt); } board.create('text', [-0.2, 1, '1'], opt); board.create('text', [-0.27, 0.5, '0,5'], opt); board.create('segment', [[0, 1], [-0.02, 1]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('segment', [[0, 0.5], [-0.02, 0.5]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('segment', [[Math.sqrt(3), 0], [Math.sqrt(3), 1.05]], {strokeColor: '#9e9e9e', strokeWidth: 1, dash: 2, fixed: true, highlight: false}); board.create('text', [1.6, 1.1, '√3'], opt); var meth = 1, N = 0, X = []; function tirage() { var a, d, x, y; if (meth === 1) { a = Math.PI * Math.random(); return Math.sqrt(2 - 2 * Math.cos(a)); } if (meth === 2) { d = Math.random(); return 2 * Math.sqrt(1 - d * d); } do { x = 2 * Math.random() - 1; y = 2 * Math.random() - 1; } while (x * x + y * y >= 1); return 2 * Math.sqrt(1 - x * x - y * y); } function F(x) { if (meth === 1) { return Math.acos(Math.max(-1, Math.min(1, 1 - x * x / 2))) / Math.PI; } if (meth === 2) { return 1 - Math.sqrt(Math.max(0, 1 - x * x / 4)); } return x * x / 4; } var esc = board.create('curve', [[0], [0]], {strokeColor: '#1565c0', strokeWidth: 2, highlight: false}); esc.updateDataArray = function () { if (!X.length) { this.dataX = []; this.dataY = []; return; } var s = X.slice().sort(function (a, b) { return a - b; }), px = [0], py = [0], i; for (i = 0; i < s.length; i++) { px.push(s[i], s[i]); py.push(i / s.length, (i + 1) / s.length); } px.push(2); py.push(s.length ? 1 : 0); this.dataX = px; this.dataY = py; }; board.create('functiongraph', [function (x) { return F(x); }, 0, 2], {strokeColor: '#c62828', strokeWidth: 2, highlight: false}); board.create('segment', [[0, 0], [2, 1]], {strokeColor: '#9e9e9e', strokeWidth: 1, dash: 3, fixed: true, highlight: false}); function tirer(k) { for (var i = 0; i < k; i++) { X.push(tirage()); } board.update(); } board.create('button', [-0.28, -0.22, 'M1', function () { meth = 1; X = []; board.update(); }], bopt); board.create('button', [0.08, -0.22, 'M2', function () { meth = 2; X = []; board.update(); }], bopt); board.create('button', [0.44, -0.22, 'M3', function () { meth = 3; X = []; board.update(); }], bopt); board.create('button', [0.85, -0.22, '+ 100 cordes', function () { tirer(100); }], bopt); board.create('text', [-0.28, -0.36, function () { return 'Méthode ' + meth + ' : ' + X.length + ' cordes tirées'; }], opt); board.create('text', [-0.28, -0.46, 'bleu : fréquences cumulées ; rouge : F(x)'], opt); En rouge, la fonction de répartition $F(x) = P(X \leqslant x)$ de la longueur pour la méthode choisie ; en bleu, les fréquences cumulées croissantes des cordes tirées. La droite en pointillés correspondrait à des longueurs réparties uniformément sur $[0 ; 2]$ : aucune des trois méthodes ne la suit. À la verticale de $\sqrt{3}$, la courbe rouge vaut $\frac{2}{3}$, $\frac{1}{2}$ ou $\frac{3}{4}$.
La densité : où se concentrent les longueurs

La dérivée de la fonction de répartition indique où les longueurs se concentrent (c'est la densité de la loi). Pour la méthode n°1, avec la dérivée de la fonction arc cosinus, $\left(\arccos u\right)' = -\dfrac{u'}{\sqrt{1 - u^2}}$ (admise ici), et $u(x) = 1 - \dfrac{x^2}{2}$, $u'(x) = -x$ :

$$F_1'(x) = \frac{1}{\pi} \times \frac{x}{\sqrt{1 - \left(1 - \frac{x^2}{2}\right)^2}}.$$

Or $1 - \left(1 - \frac{x^2}{2}\right)^2 = x^2 - \frac{x^4}{4} = \frac{x^2(4 - x^2)}{4}$, dont la racine carrée vaut $\frac{x\sqrt{4 - x^2}}{2}$ pour $x \in \,]0 ; 2[$. Après simplification par $x$ :

$$F_1'(x) = \frac{2}{\pi\sqrt{4 - x^2}}.$$

Cette fonction est croissante et tend vers $+\infty$ quand $x$ tend vers $2$ : les longueurs s'accumulent près du diamètre. C'est ce que montrent les diagrammes en bâtons des simulations, et c'est exactement l'inverse de l'hypothèse « longueurs uniformes » du quatrième raisonnement, dont la densité serait constante, égale à $\dfrac{1}{2}$.

Joseph Bertrand Médaille en bronze : profil gauche d'un homme âgé à la barbe et aux cheveux longs, en habit brodé de l'Institut, entouré de l'inscription « Joseph Bertrand, membre de l'Institut », signée J.-C. Chaplain, 1894. Médaille en l'honneur de Joseph Bertrand, gravée par Jules-Clément Chaplain en 1894. Musée Carnavalet, Paris Musées, CC0, Wikimedia Commons.

Joseph Bertrand naît à Paris en 1822 et y meurt en 1900. Enfant d'une précocité célèbre, il est reçu à l'École polytechnique à dix-sept ans, en 1839. Il enseigne ensuite à Polytechnique et au Collège de France, entre à l'Académie des sciences en 1856 et en devient le secrétaire perpétuel en 1874 : une fonction très influente, qu'il occupe jusqu'à sa mort. En 1884, il est aussi élu à l'Académie française, ce qui est rare pour un mathématicien. Le mathématicien Charles Hermite était son beau-frère.

Son nom reste attaché à plusieurs résultats que l'on peut présenter au lycée :

L'autre paradoxe : les trois coffrets

Trois coffrets ont chacun deux tiroirs. Le premier contient deux pièces d'or, le deuxième deux pièces d'argent, le troisième une pièce d'or et une pièce d'argent. On choisit un coffret au hasard, on ouvre un tiroir au hasard : il contient une pièce d'or. Quelle est la probabilité que l'autre tiroir contienne aussi une pièce d'or ?

On est tenté de répondre $\dfrac{1}{2}$ : il reste deux coffrets possibles. Mais un arbre pondéré, avec $C_1$ (or-or), $C_2$ (argent-argent), $C_3$ (or-argent) et $O$ « le tiroir ouvert contient de l'or », donne

$$P(O) = \frac{1}{3} \times 1 + \frac{1}{3} \times 0 + \frac{1}{3} \times \frac{1}{2} = \frac{1}{2},$$

puis, par définition d'une probabilité conditionnelle,

$$P_O(C_1) = \frac{P(C_1 \cap O)}{P(O)} = \frac{1/3}{1/2} = \frac{2}{3}.$$

Le coffret or-or a deux fois plus de chances de montrer de l'or que le coffret mixte : ce paradoxe est l'ancêtre de nombreux problèmes de probabilités conditionnelles, dont celui des trois portes (Monty Hall). Le texte Prendre des décisions développe ces raisonnements.

Bertrand et la « probabilité des jugements »

Dans le même livre, Bertrand se montre très critique envers ceux qui, comme Condorcet puis Poisson, ont voulu calculer la probabilité qu'un tribunal se trompe. Selon lui, ces calculs reposent sur des hypothèses invérifiables (des juges indépendants, d'égale compétence) et donnent une fausse impression de rigueur. La même prudence traverse son problème de la corde : un calcul exact sur un modèle mal choisi ne dit rien du monde. Voir le texte La mathématique sociale de Condorcet.

Que veut dire « choisir au hasard » ? Laplace et les cas également possibles

Dans son Essai philosophique sur les probabilités (1814), Pierre-Simon de Laplace donne la définition que l'on apprend encore au collège : la probabilité d'un événement est le rapport du nombre de cas favorables au nombre de cas possibles, à condition que tous les cas soient « également possibles ». Pour un dé ou une pièce, la symétrie de l'objet justifie cette hypothèse.

La définition a un défaut, que les philosophes ont vite relevé : « également possibles » veut dire... également probables. Elle utilise ce qu'elle veut définir. En pratique, on s'en sort par un principe, appelé plus tard principe d'indifférence (l'économiste John Maynard Keynes lui donne ce nom en 1921) : quand on n'a aucune raison de préférer un cas à un autre, on leur donne la même probabilité.

Ce que montre la corde

Le paradoxe de Bertrand met ce principe en défaut. Pour les cordes, il y a une infinité de cas, et l'on ne peut plus les compter : il faut mesurer des longueurs d'arcs, de segments ou des aires. Or appliquer le principe d'indifférence à l'angle, à la distance au centre ou à la position du milieu donne trois lois différentes. « Aucune des trois n'est fausse, aucune n'est exacte, la question est mal posée », conclut Bertrand.

Henri Poincaré, qui enseigne le calcul des probabilités à la Sorbonne et commente le problème de la corde, y voit une leçon générale : en probabilités, le choix de ce qui est « également probable » est une convention, qu'il faut énoncer et justifier, et non une évidence. En 1933, le Russe Andreï Kolmogorov fonde les probabilités modernes sur des axiomes : une probabilité est toujours définie sur un modèle, un ensemble d'issues muni d'une loi, et c'est au modélisateur de choisir ce modèle. C'est exactement la démarche du programme de terminale : on définit d'abord une loi de probabilité, puis on calcule.

Jaynes : et si la nature choisissait ?

En 1973, le physicien américain Edwin Jaynes propose une autre lecture. Imaginons que l'on lance de loin, sans viser, des pailles sur un cercle tracé au sol, et que l'on regarde les cordes qu'elles découpent. Le résultat ne devrait pas dépendre de l'endroit exact où l'on a dessiné le cercle, ni de son orientation, ni de sa taille. Jaynes montre que ces trois exigences d'invariance ne laissent qu'une seule loi possible : celle du raisonnement n°2, avec la réponse $\dfrac{1}{2}$. Il rapporte que des lancers réels de pailles donnent bien une fréquence voisine de $\dfrac{1}{2}$.

Le problème n'est donc pas insoluble : il le devient quand on oublie de dire quelle expérience on fait. Une fois l'expérience décrite (tirer deux points, lancer des pailles, choisir un milieu), la réponse est unique et vérifiable par la simulation.

La loi uniforme et l'instruction random()

En Python, random() renvoie un nombre « au hasard » dans $[0 ; 1[$, de sorte que deux intervalles de même longueur aient la même probabilité de le contenir : on dit qu'il suit la loi uniforme. Toutes les simulations de ce texte partent de cet unique outil. La différence entre les trois méthodes tient seulement à ce que l'on transforme ce nombre : en angle (méthode n°1), en distance (méthode n°2) ou en point du disque (méthode n°3). Une fonction appliquée à un nombre uniforme ne donne pas, en général, un nombre uniforme : c'est tout le paradoxe, et c'est la raison pour laquelle les longueurs ne sont jamais uniformes.

Des directions pour construire sa question

Ce texte n'est pas un Grand Oral. Il rassemble des connaissances dans lesquelles chacun peut choisir une direction, la creuser et formuler sa propre question. Quelques directions possibles :

Pour l'échange avec le jury : les notions du cours à maîtriser

Le jury peut interroger sur les chapitres de spécialité mobilisés. Avec ce thème, il est utile de connaître parfaitement : les probabilités, l'équiprobabilité et la loi de probabilité d'une variable aléatoire ; les probabilités conditionnelles et les arbres pondérés ; la loi binomiale, l'espérance et la variance ; l'inégalité de Bienaymé-Tchebychev et la loi des grands nombres ; le cercle trigonométrique, cosinus et sinus et la résolution de $\cos x < a$ ; la dérivée de $\sqrt{u}$ et l'étude des variations d'une fonction ; les boucles et la fonction random en Python.

Pour réviser ces chapitres, l'application Maths FlashBac reprend tout le cours de spécialité en cartes.

Pour aller plus loin