Duc de Toscane avec Scilab

La fonction grand(nb_lignes,nb_cols,'unf',mini,maxi) génère une matrice remplie de nombres aléatoirement choisis sur l'intervalle réel [mini,maxi[.

On fabrique donc une matrice d'une ligne contenant n expériences du Duc:

SciLab
function y = toscane(n)
  tab = [];
  for k = [1:n] do
    tab = [tab , sum(int(grand(1,3,'unf',1,7)))]
  end
  y = tabul(tab) 
endfunction

Par exemple, pour 10 000 expériences:

SciLab
-->toscane(100000)
 ans  =
 
    18.    461.    
    17.    1370.   
    16.    2739.   
    15.    4571.   
    14.    7111.   
    13.    9864.   
    12.    11617.  
    11.    12540.  
    10.    12410.  
    9.     11643.  
    8.     9680.   
    7.     6841.   
    6.     4481.   
    5.     2896.   
    4.     1345.   
    3.     431.    

On peut même afficher un joli diagramme en bâton:

SciLab
-->t = toscane(100000);
 
-->plot2d3(t(:,1),t(:,2))

Petit sucre : approximation d'une loi binomiale par une loi normale

On définit une loi de Bernoulli de paramètre p:

SciLab
function y=bernoulli(p)
    if rand()<p then
        y=1
    else
        y=0
    end
endfunction

Puis une loi binomiale de paramètres n et p:

SciLab
function y=binom(n,p)
    y=0
    for k = 0:n do
       y = y + bernoulli(p) 
    end
endfunction

On peut alors comparer l'allure du diagramme en bâton de la loi binomiale et l'allure de la courbe de la fonction de densité de la loi normale de paramètres $n\times p$ et $\sqrt{n\times p\times (1-p)}$:

SciLab
tab=[];
for k = [1:10000] do tab = [tab,binom(200,0.1)]; end;
t = tabul(tab);
x = 0:40;
clf();
plot2d3(t(:,1),t(:,2)*0.0001),
plot(x,(exp(-(x-20)^2/(2*18)))/sqrt(2*3.14*18))

courtesy of webmatter.de