Rev 18195 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
20 | reyssat | 1 | !if $wims_read_parm!=slib_header |
13586 | bpr | 2 | !goto proc |
20 | reyssat | 3 | !endif |
4161 | bpr | 4 | |
20 | reyssat | 5 | slib_parms=3\ |
6 | ,m\ |
||
7 | ,n\ |
||
8 | ,p |
||
4330 | bpr | 9 | slib_author=Adeline, Grelot |
4161 | bpr | 10 | |
18193 | bpr | 11 | slib_example=5,10,0.5\ |
18195 | lemaire | 12 | 5,10,1 |
18193 | bpr | 13 | |
3265 | bpr | 14 | slib_require=pari |
3307 | bpr | 15 | !exit |
16 | |||
20 | reyssat | 17 | :proc |
18 | slib_out= |
||
19 | |||
20 | !distribute item $wims_read_parm into slib_m, slib_n, slib_p |
||
18195 | lemaire | 21 | !if $slib_p<=0 |
18193 | bpr | 22 | slib_out=!makelist 0 for x=1 to $slib_m |
23 | !exit |
||
24 | !endif |
||
18195 | lemaire | 25 | !if $slib_p>=1 |
18193 | bpr | 26 | slib_out=!makelist $slib_n for x=1 to $slib_m |
27 | !exit |
||
28 | !endif |
||
20 | reyssat | 29 | slib_u=!random 0,1 repeat $slib_m |
30 | slib_C=!values x for x=0 to $[$slib_n] |
||
18466 | bpr | 31 | slib_out=!exec pari {slib_g(p,x,m)=local(L,u,q,i,k) ;L=List([]);\ |
18193 | bpr | 32 | for(k=1,m,u=[$slib_u][k];q=p[1];i=1;\ |
33 | if(u<q,listput(L,x[1]),while(u>=q,i=i+1;q+=p[i]);listput(L,x[i])));L};\ |
||
18466 | bpr | 34 | {slib_bino(n,p,m)=local(q,b,prob);b=List([]);\ |
18193 | bpr | 35 | q=p/(1-p);prob=(1-p)^n;listput(b,prob);\ |
36 | for(i=1,n,prob=prob*(n-i+1)/i*q;listput(b,prob));\ |
||
37 | Vec(slib_g(b,[$slib_C],m))};\ |
||
38 | slib_bino($slib_n,$slib_p,$slib_m) |
||
20 | reyssat | 39 | |
40 | slib_out=!declosing $slib_out |
||
41 | slib_out=!trim $slib_out |