Programmeren in Maple: Distributies van random variabelen

versie 1.0 voor Maple V release 5

G.J. Bex, dept. WNI, Limburgs Universitair Centrum

Discrete uniforme verdeling

De functie 'rand' creeert een procedure om uniform verdeelde random getallen te generern. Eens deze procedure geinitialiseert is geeft ze bij elke aanroep een willekeurig getal in het gewenste bereik.

> uniform := rand(1..10):

Men wil nu nagaan of deze getallen werkelijk uniform verdeeld zijn. We definieren een procedure 'distribution' die een groot aantal random natuurlijke getallen tussen 1 en 10 genereert met behulp van de procedure 'uniform'. Het aantal keer dat elk van de getallen 1 tot 10 voorkomt wordt geteld en het resultaat van de procedure is een vector die de distributie bevat.

> distribution := proc(n::posint)
local i, count, idx;
count := vector(10,0);
for i from 1 to n do
idx := uniform();
count[idx] := count[idx] + 1;
od;
evalm(count/n);
end:

Met behulp van 'distribution worden nu enkele distributies gegenereert die geplot worden mbv.de 'plots[listplot]' functie.

> p1 := plots[listplot](distribution(100),view=[1..10,0..1],color=red):

> p2 := plots[listplot](distribution(1000),view=[1..10,0..1],color=green):

> p3 := plots[listplot](distribution(10000),view=[1..10,0..1],color=blue):

Deze drie plots kunnen getoond worden mbv. de functie 'plots[display]':

> plots[display]([p1,p2,p3]);

[Maple Plot]

Om beter het verschil te zien tussen p2 en p3 kunnen we van de 'view' optie gebruik maken:

> plots[display]([p1,p2,p3],view=[1..10,0..0.2]);

[Maple Plot]

> uniform := 'uniform': distribution := 'distribution': p1 := 'p1': p2 := 'p2': p3 := 'p3':