diff options
Diffstat (limited to 'modules/randlib/demos/discrete.dem.sce')
-rwxr-xr-x | modules/randlib/demos/discrete.dem.sce | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/modules/randlib/demos/discrete.dem.sce b/modules/randlib/demos/discrete.dem.sce new file mode 100755 index 000000000..0b174c4bc --- /dev/null +++ b/modules/randlib/demos/discrete.dem.sce @@ -0,0 +1,54 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) ENPC +// Copyright (C) ????-2008 - INRIA +// Copyright (C) 2010 - DIGITEO - Allan CORNET +// +// This file is released under the 3-clause BSD license. See COPYING-BSD. + + +function [z] = RndDiscT(n) + + function [y] = RndDisc(m,n,x,p) + // discrete law random number + // sum p_i delta_{x_i} + //------------------------------- + p1 = [0, p]; + p1 = cumsum(p1); + y = rand(m, n, "uniform"); + N = prod(size(x)); + res = 0*ones(m*n); + for i=1:N,z=0*ones(m*n,1),id=find( p1(i) <= y & y < p1(i+1) ), + z(id) = x(i)*ones(prod(size(id))),res=res+z; + end + y = matrix(res, m, n); + endfunction + + [lhs,rhs] = argn(0) + if rhs <= 0 ; n = 10000;end + x = [1,3,4,6,10,12]; + pr = [0.1,0.2,0.3,0.2,0.1,0.1]; + y = RndDisc(1,n,x,pr); + i = 0:13 + z = []; + for i1=i, z=[z,prod(size(find(y==i1)))],end + + drawlater(); + + my_handle = scf(100001); + clf(my_handle, "reset"); + demo_viewCode("discrete.dem.sce"); + + plot2d3("onn",i',z'/n,[1,3],,,[0,0,14,0.5]); + plot2d1("onn",x',pr',[-2,6]); + xtitle(_("Simulation of a discrete random variable")); + current_axe = gca(); + current_axe.title.font_size = 3; + current_axe.background = color(232,230,200); + legend([_("Simulation"); _("Theory")]); + + drawnow(); +endfunction + +RndDiscT(); +clear RndDiscT; + |