Uno studente deve ripondere a 3 domande, ciascuna delle quali corredata di 4 risposte, delle quali
una sola è quella esatta. Se egli risponde del tutto a caso, qual è la probabilità che:
A) risponda esattamente e tutte le domande;
B) ne sbagli una;
C) risponda esattamente ad almeno due di esse ?
A) In 1 caso su 4 risponde correttamente ad 1 domanda, ossia con la probabilità di 1/4.
Che le risposte siano corrette a tutte e tre le domande la probabilità è 1/4·1/4·1/4 = 1/4³ = 0.015625 = 1.5625/100.
B) La probabilità che sbagli solo la prima domanda è 3/4·1/4·1/4. La probabilità che sbagli la prima o la seconda o la terza
è il triplo: 3/4·1/4·1/4*3 = 0.140625 = 14.0625/100.
C) La probabilità che le risposte corrette siano 2 o 3, ovvero che sbagli 1 domanda o nessuna, è la somma delle due probabilità precedenti:
1/4³ + 3/4·1/4²*3 = 0.15625 = 15.625/100.
La probabilità che azzecchi almeno due domande è inferiore al 16%: è piuttosto bassa.
Se non sono convinto, posso fare la prova sperimentalmente mediante una simulazione con un programmino in JavaScript, software che è incorporato in tutti i browser. Basta andare qui: http://macosa.dima.unige.it/js/js.htm (puoi vedere anche qui), cliccare "macosa.dima.unige.it/js.com" e mettere nella finestra in alto:
<pre><script> with(Math) { n=1e3; x=0; for(i=0; i<n; i=i+1) { r1=floor(random()*4); r2=floor(random()*4); r3=floor(random()*4); s=0; if(r1+r2+r3==0) s=1; x=x+s} document.writeln ("n=",n," fr = ", x/n*100,"%") n=n*10; x=0; for(i=0; i<n; i=i+1) { r1=floor(random()*4); r2=floor(random()*4); r3=floor(random()*4); s=0; if(r1+r2+r3==0) s=1; x=x+s} document.writeln ("n=",n," fr = ", x/n*100,"%") n=n*10; x=0; for(i=0; i<n; i=i+1) { r1=floor(random()*4); r2=floor(random()*4); r3=floor(random()*4); s=0; if(r1+r2+r3==0) s=1; x=x+s} document.writeln ("n=",n," fr = ", x/n*100,"%") n=n*10; x=0; for(i=0; i<n; i=i+1) { r1=floor(random()*4); r2=floor(random()*4); r3=floor(random()*4); s=0; if(r1+r2+r3==0) s=1; x=x+s} document.writeln ("n=",n," fr = ", x/n*100,"%") } </script></pre>
Ecco cosa ottengo arrivando a 1 milione di prove:
n=1000 fr = 0.8% n=10000 fr = 1.56% n=100000 fr = 1.575% n=1000000 fr = 1.5662%
Volendo potrei aumentare le prove (e i tempi di attesa per le uscite):
n=10000000 fr = 1.56481% n=100000000 fr = 1.563728%
Analogamente per gli altri casi:
<pre><script> with(Math) { n=1e3; x=0; for(i=0; i<n; i=i+1) { r1=floor(random()*4); r2=floor(random()*4); r3=floor(random()*4); s=0 if( (r1==0 && r2==0 && r3>0)|| (r2==0 && r3==0 && r1>0)|| (r1==0 && r3==0 && r2>0) ) s=1; x=x+s} document.writeln ("n=",n," fr = ", x/n*100,"%") n=n*10; x=0; for(i=0; i<n; i=i+1) ... } </script></pre>
n=1000 fr = 15% n=10000 fr = 14.15% n=100000 fr = 14.118% n=1000000 fr = 14.0417%
<pre><script> with(Math) { n=1e3; x=0; for(i=0; i<n; i=i+1) { r1=floor(random()*4); r2=floor(random()*4); r3=floor(random()*4); s=0 if( (r1==0 && r2==0)|| (r2==0 && r3==0)|| (r1==0 && r3==0) ) s=1; x=x+s} document.writeln ("n=",n," fr = ", x/n*100,"%") n=n*10; x=0; for(i=0; i<n; i=i+1) ... } </script></pre>
n=1000 fr = 15% n=10000 fr = 15.7% n=100000 fr = 15.642% n=1000000 fr = 15.5692%
OK
Ecco un'altra simulazione con questo script in cui modifico TruthValue via via nel modo sotto indicato, supponendo che la risposta OK sia sempre la prima (r1, r2 e r3 possono essere 0, 1, 2 o 3) [poi vedremo come si potrebbe usare R].
function TruthValue() { with(Math) { r1=floor(random()*4); r2=floor(random()*4); r3=floor(random()*4) V=0; if(r1+r2+r3==0) {V=1} }} n=20480000 1.5623486328125% +/- 0.008221023443472584% n=10240000 1.561591796875% +/- 0.011623511463137245% n=5120000 1.55830078125% +/- 0.016421072238068206% n=2560000 1.5595703125% +/- 0.023232213332100415% n=1280000 1.552265625% +/- 0.03277949983245769% n=640000 1.5453125% +/- 0.0462549232686036% n=320000 1.531875% +/- 0.06513380394598758% n=160000 1.54625% +/- 0.09253768021932202% n=80000 1.5075% +/- 0.1292436506018391% n=40000 1.485% +/- 0.1814308333874995% n=20000 1.49% +/- 0.25701022880983865% n=10000 1.68% +/- 0.3855835933630308% r1=floor(random()*4); r2=floor(random()*4); r3=floor(random()*4); V=0 if(r1==0 & r2==0 & r3 > 0) {V=1} if(r1==0 & r3==0 & r2 > 0) {V=1} if(r2==0 & r3==0 & r1 > 0) {V=1} n=20480000 14.06828125% +/- 0.023049078094169353% ... n=10000 13.99% +/- 1.0407017901500901% r1=floor(random()*4); r2=floor(random()*4); r3=floor(random()*4); V=0 if(r1==0 & r2==0) {V=1} if(r1==0 & r3==0) {V=1} if(r2==0 & r3==0) {V=1} n=20480000 15.614443359374999% +/- 0.024063212276052407% ... n=10000 15.55% +/- 1.0871963712204706%OK
Procedimento con R (vedi): # source("http://macosa.dima.unige.it/r.R") # PR = function(n) {f = 0; for (i in 1:n) f = f + ifelse(Event(),1,0) fr=f/n; S=sqrt(fr*(1-fr)/(n-1)); cat(fr*100, "+/-", 3*S*100,'\n'); fr0<<- fr; n0<<- n} PR2 = function(n) {f=0; for (i in 1:n) f=f+ifelse(Event(),1,0); n=n+n0; f=f+fr0*n0 fr=f/n;S=sqrt(fr*(1-fr)/(n-1));cat(fr*100,"+/-",3*S*100,' n =',n,'\n');fr0<<-fr;n0<<-n} # 1/4^3*100 # 1.5625 <- calcolo esatto Event = function() {V=0; if(RUNIF2(1, 0,1,c(3,1))+RUNIF2(1, 0,1,c(3,1))+RUNIF2(1, 0,1,c(3,1))==3) V=1; V} # sperimentalmente, fermandosi ad 1 milione di prove: PR(1000) # 2.1 +/- 1.360942 PR2(9000) # 1.49 +/- 0.3634764 n = 10000 PR2(90000) # 1.55 +/- 0.1171918 n = 1e+05 PR2(900000) # 1.5708 +/- 0.03736722 n = 1e+06 # 1/4^2*3/4*3*100 # 14.0625 <- calcolo esatto Event = function() {V=0; if(RUNIF2(1, 0,1,c(3,1))+RUNIF2(1, 0,1,c(3,1))+RUNIF2(1, 0,1,c(3,1))==2) V=1; V} PR(1000) # 12.1 +/- 3.095463 PR2(9000) # 14.25 +/- 1.048739 n = 10000 PR2(90000) # 14.008 +/- 0.3292612 n = 1e+05 PR2(900000) # 14.0774 +/- 0.1043591 n = 1e+06 # 1/4^3*100+1/4^2*3/4*3*100 # 15.625 <- calcolo esatto Event = function() {V=0; if(RUNIF2(1, 0,1,c(3,1))+RUNIF2(1, 0,1,c(3,1))+RUNIF2(1, 0,1,c(3,1))>=2) V=1; V} PR(1000) # 15.6 +/- 3.444071 PR2(9000) # 16.42 +/- 1.111426 n = 10000 PR2(90000) # 15.697 +/- 0.3451066 n = 1e+05 PR2(900000) # 15.6608 +/- 0.1090293 n = 1e+06