Spezzo una sbarretta lunga L in due punti scelti "del tutto a caso". Con quale probabilità posso costruire un triangolo con i pezzi che ottengo? Stimane il valore con una simulazione al computer.
Usiamo come unità di misura L, ossia assumiamo che la sbarretta sia lunga 1. Con "del tutto a caso" intendo dire che la posizione di ciascuno dei tre tagli sia un numero con distribuzione uniforme tra 0 ed 1. È abbastanza facile valutare sperimentalmente quello che accade con una simulazione al computer. Usiamo questo semplice script (poi vedremo come usare R); generiamo due punti di un segmento lungo 1, li mettiamo in ordine, indichiamo con L1, L2 e L3 le lunghezze dei tre segmenti ottenuti:
function TruthValue() { with(Math) { U1 = random(); U2 = random(); x=U1; if(U2 < U1) {U1 = U2; U2 = x} L1=U1; L2=U2-U1; L3=1-U2 V=1; if (L1+L2<L3) { V = 0}; if (L1+L3<L2) { V = 0}; if (L2+L3<L1) { V = 0}; }}
Ho le seguenti uscite:
n=2560000 24.9905078125% +/- 0.08117961926445735%
n=1280000 24.97640625% +/- 0.11478373339207067%
n=640000 24.92703125% +/- 0.1622216002610381%
n=320000 24.82375% +/- 0.22909782578390012%
n=160000 24.851875% +/- 0.32411660066662545%
n=80000 24.8725% +/- 0.45849875837974524%
n=40000 24.975% +/- 0.6493105185338807%
n=20000 24.635% +/- 0.9140674617971235%
n=10000 24.79% +/- 1.2954451465858297%
Se mi fermo qui, posso assumere che la probabilità sia 25.0% ± 0.1%. Suppongo che la probabilità sia esattamente 1/4.
Tento di trovare una conferma teorica di quanto congetturato. La probabilità che un numero positivo minore di 1 del tutto casuale sia minore di 1/2 è 1/2. La probabilità che anche un altro numero dello stesso tipo, indipendentemente da esso, sia minore di 1/2 è 1/2. La probabilità che entrambi siano minori di 1/2 è 1/2·1/2 = 1/4.
Con R ho:
n <- 1e4 # faccio 10 mila prove # conto i casi in cui la somma di due segmenti qualunque è maggiore del terzo # x ed y sono le posizioni dei tagli; le metto in ordine; metto in a,b,c le lunghezze dei lati s <- 0; for(i in 1:n) {x <- runif(1); y <- runif(1); if(y<x) {k<-x; x<-y; y<-k}; a <- x; b <- y-x; c <- 1-y; s <- s+ifelse((a+b>c)&(a+c>b)&(c+b>a),1,0)}; s/n # 0.2576 n <- 1e5 # faccio 100 mila prove s <- 0; for(i in 1:n) {x <- runif(1); y <- runif(1); if(y<x) {k<-x; x<-y; y<-k}; a <- x; b <- y-x; c <- 1-y; s <- s+ifelse((a+b>c)&(a+c>b)&(c+b>a),1,0)}; s/n # 0.24892 n <- 1e6 # faccio 1 milione di prove s <- 0; for(i in 1:n) {x <- runif(1); y <- runif(1); if(y<x) {k<-x; x<-y; y<-k}; a <- x; b <- y-x; c <- 1-y; s <- s+ifelse((a+b>c)&(a+c>b)&(c+b>a),1,0)}; s/n # 0.250213
Posso assumere che la probabilità sia 25.0%
Volendo posso cercare un algoritmo più veloce. Basta che generi del tutto a caso, in modo indipendente, due punti in [0,1] e valuti la frequenza con cui l'ascissa massima di essi è minore di 1/2:
n <- 1e5 s <- 0; for(i in 1:n) {x <- runif(2); s <- s+ifelse(max(x[1],x[2])<1/2,1,0)}; s/n # 0.24977
Posso studiare il fenomeno e congetturare il limite anche con questa simulazione
che rappresenta graficamente le uscite da eseguire con R.
Vedi qui se vuoi fare più prove senza rappresentare graficamente tutti gli esiti.
A questo punto tento di trovare una conferma teorica di quanto congetturato.
La seconda versione della ricerca sperimentale mi suggerisce come procedere.
La probabilità che un numero positivo minore di 1 del tutto casuale sia minore di 1/2 è 1/2.
La probabilità che anche un altro numero dello stesso tipo, indipendentemente da esso, sia minore di 1/2 è 1/2.
La probabilità che entrambi siano minori di 1/2 è 1/2·1/2 = 1/4.