import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Color;
public class bin extends java.applet.Applet{
    Color col1,col2;
    int N,taka,haba,ni,nj;
    int xz,xz2,yz,yz2,label;
    String NS,habaS,takaS;
    double Nd,takad,habad,th;
    Color cl[]=new Color[13];
    int n;
  public double dou(String dous){
    double dou1;
    dou1 = (Double.valueOf(dous)).doubleValue();
    return dou1;
  }
  public double rand(){
    double rand1;
    rand1=Math.random();
    return rand1;
  }
  public void init(){
    col1=Color.black;
    col2=Color.yellow;
    cl[0]=Color.white;
    cl[1]=Color.cyan;
    cl[2]=Color.green;
    takaS=getParameter("takap");
    habaS=getParameter("habap");
    NS=getParameter("Np");
    habad=dou(habaS);
    takad=dou(takaS);
    Nd=4-5000*Math.log(rand());
    haba=(int)habad;
    taka=(int)takad;
    N=(int)Nd;
    int irand;
    irand=(int)(4*rand());
    if(irand==0){
        n=1;
    }
    if(irand==1){
        n=5;
    }
    if(irand==2){
        n=(int)(100*rand()+1);
    }
    if(irand==3){
        n=100;
    }
  }
  double x1;
  double y1;
  int x;
  int y;
  double s;
  String sss;
  public double jou(double a,double b){
    double jou1;
    jou1=Math.pow(a,b);
    return jou1;
  }
  public double arcsinaw(double atasw){
    double artn1saw;
    artn1saw=Math.asin(atasw);
    return artn1saw;
  }
  public double d(double d1,double d2,double d3,double d4){
    double dw;
    dw=jou(jou(d3-d1,2.0)+jou(d4-d2,2.0),0.5);
    return dw;
  }

    public double nCxp(int nn,int xx,double pp){
        double sspp;
        sspp=1.0;
        int lj;
        if(xx>nn-xx){
            for(lj=nn;lj>xx;lj--){
                sspp=sspp*lj*(1.0-pp);
            }
            for(lj=nn-xx;lj>0;lj--){
                sspp=sspp/(lj+0.0);
            }
            sspp=sspp*jou(pp,xx);
        }else{
            for(lj=nn;lj>nn-xx;lj--){
                sspp=sspp*lj*pp;
            }
            for(lj=xx;lj>0;lj--){
                sspp=sspp/(lj+0.0);
            }
            sspp=sspp*jou(1.0-pp,nn-xx);
        }
        return sspp;
    }
    public void paint(java.awt.Graphics g){
        int i;
        g.setColor(col1);
        g.fillRect(1,1,haba,taka);
        double dm;
        double p;
        int ivmax;
        int j;
        int irand;
        int vrand[]=new int[101];
        p=rand();
        for(i=0;i<=n;i++){
            vrand[i]=0;
        }//i
        dm=0.0;
        ivmax=0;
        for(i=0;i<N;i++){
            irand=0;
            for(j=0;j<n;j++){
                if(rand()<p){
                    irand++;
                }
            }
            vrand[irand]=vrand[irand]+1;
            if(vrand[irand]>ivmax){
                ivmax=vrand[irand];
            }
            dm=dm+irand/(N+0.0);
        }//i
        g.setColor(Color.white);
        g.drawLine(1,290,500,290);
        g.drawString("0",(int)(30+225/(n+1)),305);
        g.drawString(""+n,(int)(30+n*450/(n+1)+225/(n+1)),305);
        for(i=0;i<=n;i++){
            g.setColor(Color.yellow);
            g.fillRect((int)(30+i*450/(n+1)),(int)(290-vrand[i]*250/ivmax),(int)(450/(n+1)-1),(int)(vrand[i]*250/ivmax));
            if(vrand[i]>0){
                g.setColor(Color.cyan);
                g.drawString(""+vrand[i],(int)(30+i*450/(n+1)),(int)(290-vrand[i]*250/ivmax));
            }
            g.setColor(Color.red);
            g.drawLine((int)(30+i*450/(n+1)),(int)(290-N*nCxp(n,i,p)*250/ivmax),(int)(30+(i+1)*450/(n+1)),(int)(290-N*nCxp(n,i,p)*250/ivmax));
        }//i
        g.setColor(Color.green);
        g.drawString("N="+N,15,15);
        g.drawString("n="+n,65,15);
        g.drawString("p="+p,100,12);
        g.drawString("mean="+dm,250,12);
        g.drawString("l_mean="+(n*p),250,24);

    }
}

