summaryrefslogtreecommitdiff
path: root/modules/randlib/demos/hypergeom.dem.sce
blob: 69c2efac1b0b19c39fe5fb9fbe9436279bb09bc1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 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 [] = HyperGeomT(n)

    function [y] = HyperGeom(m, n, Mean, var)
        z = var / (Mean * Mean);
        pP = 0.5 * (1.0 - sqrt((z - 1.0) / ( z + 1.0 )));
        y = rand(m, n, "uniform")
        zz = find( y > pP) ;
        y = pP * ones(y);
        y(zz) = (1-pP) * ones(zz);
        y1 = rand(m, n, "uniform")
        y = -Mean * log(y1) ./ (2.0 * y) ;
    endfunction

    [lhs,rhs]=argn(0)
    if rhs <= 0 ; n=10000;end
    y=HyperGeom(1,n,1,10)

    drawlater();
    my_handle = scf(100001);
    clf(my_handle,"reset");
    demo_viewCode("hypergeom.dem.sce");
    histplot([0:0.25:10], y, [1,1], "061", " ", [0,0,10,0.4]);
    xtitle(_("Simulation of a hyper geometric random variable"));
    BackgroundColorId = color(232,230,200);
    PolylineFillColorId = color(179,179,0);
    current_axe = gca();
    current_axe.title.font_size = 3;
    current_axe.background = color(232,230,200);
    current_axe.children.children.fill_mode = "on";
    current_axe.children.children.background = PolylineFillColorId;
    current_axe.grid = [-1 PolylineFillColorId];
    drawnow();

endfunction

HyperGeomT();
clear HyperGeomT;