Friday, July 15, 2011

PROGRAM TO TEST UNIFORMITY OF RANDOM NUMBERS



import java.io.*;
import java.util.*;
class randomuni

  public static void main(String args[])throws IOException
  
  { int i,j;
    int r[]=new int[100];
    
    int arr1[]=new int[100];
    BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
    
    System.out.println("Random number generated using in built function ");
    Random randomGenerator = new Random();
    for (i = 0; i < 100; i++)
    {
      int randomInt = randomGenerator.nextInt(100);
      arr1[i]=randomInt;
      System.out.print(randomInt+" ");
    }


    System.out.println("\nRandom number generated using linear congruential method ");
    System.out.println("Enter the values of X0,a,c and m \n");
    int xo=Integer.parseInt(b.readLine());
    int a=Integer.parseInt(b.readLine());
    int c=Integer.parseInt(b.readLine());
    int m=Integer.parseInt(b.readLine());


    for(i=0;i<100;i++)
    {
    int rand=((a*xo+c)%m);
    r[i]=rand;
    System.out.print(r[i]+" ");
    xo=rand;
    }
    System.out.println("\nSelect any method to test uniformity--1.kolmogorav  2.chi square ");
    i=Integer.parseInt(b.readLine());
    switch(i)
    {
     case 1:double dplus,dminus,dplmax=0,dmimax=0,d,cv=0.410;
            for(i=0;i<99;i++)
            { for(j=i+1;j<100;j++)
              {  if(r[i]>r[j])
                 { int temp=r[i];
                   r[i]=r[j];
                   r[j]=temp; 
                 }
              }
            } 

            for(i=0;i<100;i++)
            { j=i+1;
              dplus=j/100-r[i];
              dminus=r[i]-((j-1)/100);
              if(i==0)
               {dplmax=dplus; 
                dmimax=dminus;
               }
              else
               {if(dplus>dplmax)
                     dplmax=dplus;


                 if(dminus>dmimax)
                     dmimax=dminus;
               }  
            }
            System.out.println("d+max= "+dplmax+"\nd-max= "+dmimax) ; 
            if(dmimax>dplmax)
                d=dmimax;
            else
                d=dplmax; 
            System.out.println("d= "+d) ; 
            if(d<=cv)
              System.out.println("\nRandom no. uniformly distributed ") ;  
            else
              System.out.println("\nRandom no. not uniformly distributed ") ; 
           break;


     case 2:float o[]=new float[100];
            double x=0,e=10,cv1=25.2;
            for(i=0;i<100;i++)
            { if(r[i]<10)
                 o[0]++;
              else
                if(r[i]<20)
                    o[1]++;
                  else
                     if(r[i]<30)
                        o[2]++;
                      else
                         if(r[i]<40)
                             o[3]++;
                          else
                             if(r[i]<50)
                                o[4]++;
                              else
                                 if(r[i]<60)
                                    o[5]++;
                                  else
                                     if(r[i]<70)
                                        o[6]++;
                                      else
                                         if(r[i]<80)
                                             o[7]++;
                                          else
                                             if(r[i]<90)
                                                o[8]++;
                                              else
                                                if(r[i]<100)
                                                    o[9]++;
               }
               
                for(i=0;i<100;i++)
                 { x+=(o[i]-e)/e ;}                                
                if(x<=cv1)
                   System.out.println("\nRandom no. uniformly distributed ") ;  
                else
                   System.out.println("\nRandom no. not uniformly distributed ") ;  
              break;


    }


  }     
 }


/*output


Z:\>javac randomuni.java


Z:\>java randomuni
Random number generated using in built function
9 30 48 89 33 92 3 7 55 29 17 56 48 42 65 65 38 97 34 72 64 8 43 43 68 57 10 5 2
2 64 76 26 29 61 72 30 91 42 64 55 46 77 61 36 62 55 41 86 53 96 92 67 15 19 96
90 68 35 67 46 72 72 48 79 58 11 69 18 12 28 43 42 18 10 23 55 97 66 98 72 52 94
 0 42 15 5 19 3 57 87 11 85 0 67 46 90 51 69 70 14
Random number generated using linear congruential method
Enter the values of X0,a,c and m


1
13
0
100
13 69 97 61 93 9 17 21 73 49 37 81 53 89 57 41 33 29 77 1 13 69 97 61 93 9 17 21
 73 49 37 81 53 89 57 41 33 29 77 1 13 69 97 61 93 9 17 21 73 49 37 81 53 89 57
41 33 29 77 1 13 69 97 61 93 9 17 21 73 49 37 81 53 89 57 41 33 29 77 1 13 69 97
 61 93 9 17 21 73 49 37 81 53 89 57 41 33 29 77 1
Select any method to test uniformity--1.kolmogorav  2.chi square
1
d+max= -1.0
d-max= 97.0
d= 97.0


Random no. not uniformly distributed


Z:\>javac randomuni.java


Z:\>java randomuni
Random number generated using in built function
7 42 54 1 95 77 77 10 34 42 51 45 17 33 0 64 24 73 19 72 0 3 50 80 8 3 87 58 83
23 98 78 37 41 6 3 95 62 99 84 86 57 87 88 80 68 4 50 69 55 38 92 49 64 74 95 80
 12 2 25 16 65 42 7 95 55 92 74 96 92 36 56 51 48 62 55 97 90 36 43 42 91 97 94
58 69 68 26 28 63 31 2 98 44 84 85 23 37 73 20
Random number generated using linear congruential method
Enter the values of X0,a,c and m


1
13
0
100
13 69 97 61 93 9 17 21 73 49 37 81 53 89 57 41 33 29 77 1 13 69 97 61 93 9 17 21
 73 49 37 81 53 89 57 41 33 29 77 1 13 69 97 61 93 9 17 21 73 49 37 81 53 89 57
41 33 29 77 1 13 69 97 61 93 9 17 21 73 49 37 81 53 89 57 41 33 29 77 1 13 69 97
 61 93 9 17 21 73 49 37 81 53 89 57 41 33 29 77 1
Select any method to test uniformity--1.kolmogorav  2.chi square
2


Random no. uniformly distributed


*/  

No comments:

Post a Comment