import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Color;
public class geo 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];
  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;
  }
  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 void paint(java.awt.Graphics g){
        int i;
        g.setColor(col1);
        g.fillRect(1,1,haba,taka);
        double dm;
        double p;

        int irand;
        irand=(int)(5*rand());
        p=0.0;
        if(irand==0){
            p=1.0-0.01*rand();
        }
        if(irand==1){
            p=0.01*rand();
        }
        if(irand>1){
            p=rand();
        }
        int m;
        int maxm;
        int ivmax;
        int vrand[]=new int[202];
        maxm=200;
        g.setColor(Color.white);
        g.drawLine(1,290,500,290);
        for(i=0;i<=maxm;i++){
            vrand[i]=0;
        }//i
        dm=0.0;
        ivmax=0;
        double rp;
        int cnt;
        int cntmax=0;
        for(i=0;i<N;i++){
            cnt=0;
            rp=rand();
            while(rp>p){
                cnt++;
                rp=rand();
                if(cnt>maxm){
                    break;
                }
            }
            if(cnt<maxm){
                vrand[cnt]=vrand[cnt]+1;
                if(vrand[cnt]>ivmax){
                    ivmax=vrand[cnt];
                }
            }else{
                vrand[maxm]=vrand[maxm]+1;
//                if(vrand[maxm]>ivmax){
//                    ivmax=vrand[maxm];
//                }
            }
            if(cnt>cntmax){
                cntmax=cnt;
            }
            dm=dm+cnt/(N+0.0);
        }//i
        g.setColor(Color.green);
        g.drawString("0",(int)(30+200/(cntmax+1)),305);
        g.drawString(""+cntmax,(int)(30+cntmax*400/(cntmax+1)+200/(cntmax+1)),305);
        g.drawString("over "+maxm,450,305);
        for(i=0;i<=cntmax;i++){
            if(i<maxm){
            g.setColor(Color.yellow);
            g.fillRect((int)(30+i*400/(cntmax+1)),(int)(290-vrand[i]*250/ivmax),(int)(400/(cntmax+1)),(int)(vrand[i]*250/ivmax));
            g.setColor(Color.red);
            g.drawLine((int)(30+i*400/(cntmax+1)),(int)(290-p*N*Math.pow(1.0-p,i)*250/ivmax),(int)(29+(i+1)*400/(cntmax+1)),(int)(290-p*N*Math.pow(1.0-p,i)*250/ivmax));
            if(vrand[i]>0){
                g.setColor(Color.cyan);
                g.drawString(""+vrand[i],(int)(30+i*400/(cntmax+1)),(int)(290-vrand[i]*250/ivmax));
            }
            }
        }//i

        if(vrand[maxm]>ivmax){
            g.setColor(Color.yellow);
            g.fillRect(450,30,20,260);
            g.setColor(Color.pink);
            g.drawString(""+vrand[maxm],450,28);
        }else{
            g.setColor(Color.yellow);
            g.fillRect(450,(int)(290-vrand[maxm]*250/ivmax),20,(int)(vrand[maxm]*250/ivmax));
            g.setColor(Color.cyan);
            g.drawString(""+vrand[maxm],450,(int)(290-vrand[maxm]*250/ivmax));
        }
        g.drawString("p="+p,15,15);
        g.setColor(Color.green);
        g.drawString("N="+N,155,15);
        g.drawString("max(x)="+cntmax,205,12);
        g.drawString("mean="+dm,265,15);
        g.drawString("l_mean="+(1-p)/p,265,25);

    }
}

