random
, retourne des entiers
entre et . Sous la forme
random(n)
, il retourne des entiers entre 0 et
.
alea:= random/1e12; suite:=alea() $ i=1..100; moyennes:=_plus(suite[i] $ i=1..n)/n $ n=1..100; moygraph:=point(n,moyennes[n]) $ n=1..100; plot2d([Mode=List,[moygraph]]); plot2d([Mode=List,[point(alea(),alea())$i=1..100]]); piece:=2*random(2)-1: pileface:=piece() $ i=1..100; gains:=_plus(pileface[i] $ i=1..n) $ n=1..100; gainsgraph:=point(n,gains[n]) $ n=1..100; plot2d([Mode=List,[polygon(gainsgraph)]]); moyennes:=gains[n]/n $ n=1..100; moygraph:=point(n,moyennes[n]) $ n=1..100; plot2d([Mode=List,[moygraph]]);Pour les statistiques, quelques fonctions de base sont fournies dans le module
stats
. On y trouve le calcul
de la moyenne, médiane, variance et écart-type, ainsi que les fonctions de
répartition de la loi normale, loi du Chi-Deux et loi de Student. On en
déduit les densités correspondantes en dérivant par diff
, les
quantiles en inversant numériquement la fonction de répartition. Il faut
noter que la commande export
ne fonctionne pas pour ce module, à
cause d'une collision malheureuse entre la fonction stats::normal
(fonction de répartition de la loi normale) et la fonction du noyau
normal
(forme normale d'une expression).
?stats::* ?stats::normal stats::normal(1.96); stats::normal(-2.3263); diff(stats::normal(x),x); plotfunc(stats::Tdist(x,5), stats::Tdist(x,10), stats::normal(x),x=[-3,3]); export(numeric): newton(stats::normal(x)=0.975,x); newton(stats::Tdist(x,5)=0.975,x); newton(ChiSquare(x,5)=0.975,x); newton(ChiSquare(x,5)=0.975,x=3..10);Il est utile de disposer d'un certain nombre de fonctions de base, pour la génération d'échantillons aléatoires, et la représentation graphique. Les exemples suivants utilisent les fonctions données dans la section précédente. On les suppose rassemblées dans le fichier
probastat.mu
.
read("probastat.mu"): pf:=ech_ber(1000,0.3): frequences(pf); d:=[random(6)()+1 $ i=1..1000]: freq:=frequences(d); plotlib::dataplot(Column,[[freq[i][2]$i=1..6]]); bin:= _plus(ech_ber(4,0.5)) $ i=1..1000: freq:=frequences(bin); plotlib::dataplot(Column,[[freq[i][2]$i=1..6]]); x:=ech_uni(1000): frequence_classe(x,0.3,0.7); histogramme(x,[0,0.1,0.3,0.6,1]); histo_reg(x,0,1,10); x:=ech_uni(1000): expo:=map(x,-ln); histogramme(expo,[0,0.2,0.6,1.5,3,5]); histo_reg(expo,0,5,20); x:=ech_uni(1000): y:=ech_uni(1000): tri1:=[min(x[i],y[i]) $ i=1..1000]; histo_reg(tri1,0,1,10); tri2:=[x[i]-y[i] $ i=1..1000]; histo_reg(tri2,-1,1,10]; x:=ech_nor(1000): frequence_classe(x,0.2,1.5); stats::normal(1.5)-stats::normal(0.2); histo_reg(x,-3,3,20); x:=ech_uni(1000): y:=ech_uni(1000): nuage(x,y); x:=ech_uni(1000): y:=ech_uni(1000): tri1:=[min(x[i],y[i]) $ i=1..1000]; x:=ech_uni(1000): y:=ech_uni(1000): tri2:=[max(x[i],y[i]) $ i=1..1000]; nuage(tri1,tri2); x:=ech_nor(1000): y:=ech_nor(1000): nuage(x,y); r:=0.8; z:=sqrt(1-r^2)*x + r*y: nuage(x,z); r:=-0.8; z:=sqrt(1-r^2)*2*x + r*y: nuage(x,z);