アットウィキロゴ

正規分布の近似

var x = new Array();
var d = new Array();
var f = new Array();
var point = new Array();
 
function sample(){
 
    lam =50;
 
    d[0] = 1;
    d[1] = 1;
    for(s=1;s<101;s++){
    d[s]=d[s-1]*s;    
    }
 
 
    for(k=0;k<101;k++){
    z=Math.pow(lam,k)/d[k];
    x[k] = z*Math.exp(-lam);
    }
 
    f[0] = x[0];
    for (k = 1; k < 101; k++) {
    f[k] = f[k - 1] + x[k];
    }
 
    for (s = 1; s < 101; s++) {
        point[s] = 0;
    }
 
 
 
    for (s = 1; s < 100001;s++ ){
        r1 = Math.random();
        sxs = 0;
for(sx=1;sx<101;sx++){
if(r1>f[sx])sxs=sx;    
}
point[sxs] = point[sxs] + 1;
}
 
maxy = 0;
for (s = 0; s < 101;s++ ){
if(point[s]>maxy)maxy=point[s];    
}
 
 
    paint();
 
 
}
 
function paint(){
 
 var sub=new svgpaint();
 
str="<svg width=\"500\" height=\"500\">";
 
for(s=0;s<101;s++){
x1 = 500*point[s]/maxy;
str=str+sub.rect(5*s,500-x1,5,x1,"blue");
}
 
str=str+sub.line(0,0,0,500,4,"black");
str=str+sub.line(0,500,500,500,4,"black");
 
 
str=str+"</svg>";
 
$("#memo").html(str);      
 
 
}
 
最終更新:2016年02月24日 20:42