Shailrshah

Statistical Distributions

Jan 18th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.33 KB | None | 0 0
  1. import java.util.Scanner;
  2. class Distributions{
  3.     static Scanner sc = new Scanner(System.in);
  4.     static long fact(int n){
  5.         long ans = 1;
  6.         for(int i = 2; i <= n; i++)
  7.             ans*=i;
  8.         return ans;
  9.     }
  10.     static long comb(int n, int x){
  11.         return fact(n)/(fact(x)*fact(n-x));
  12.     }
  13.     static double bernoulli(double p, int n, int x){
  14.         return (comb(n, x)*Math.pow(p, x)*Math.pow(1-p, n-x));
  15.     }
  16.     static double poisson(int lamda, int x){
  17.         return Math.exp(-lamda)*Math.pow(lamda, x)/fact(x);
  18.     }
  19.     static double uniform(int a, int b, int x){
  20.         if(x>=a && x<=b)
  21.             return Math.pow(a-b, -1);
  22.         else return 0;
  23.     }
  24.     static double normal(double sigma, double mew, int x){
  25.         return Math.pow(sigma*Math.sqrt(2*Math.PI), -1)*Math.exp(-(Math.pow(x-mew, 2))/(2*Math.pow(sigma, 2)));
  26.     }
  27.     static int takeInt(String prompt){
  28.         System.out.print(prompt+": ");
  29.         return sc.nextInt();
  30.     }
  31.     static double takeDouble(String prompt){
  32.         System.out.print(prompt+": ");
  33.         return sc.nextDouble();
  34.     }
  35.     public static void main(String[] args){
  36.         int lambda, n, a, b; double p, sigma, mew;
  37.         while(true){
  38.             switch(takeInt("1.Discrete 2.Continous 3.exit")){
  39.                 case 1:
  40.                     switch(takeInt("1.Binomial 2.Poisson")){
  41.                         case 1:
  42.                             do{p = takeDouble("p");}while(p>1||p<0);
  43.                             do{n = takeInt("n");}while(n<1);
  44.                             for(int i = 0; i <= n; i++)
  45.                                 System.out.println("p("+i+") = "+bernoulli(p, n, i));
  46.                             break;
  47.                         case 2:
  48.                             do{lambda = takeInt("lambda");}while(lambda<0);
  49.                             do{n = takeInt("n");}while(n<1);
  50.                             for(int i = 0; i <= n; i++)
  51.                                 System.out.println("p("+i+") = "+poisson(lambda, i));
  52.                             break;
  53.                         default:
  54.                             System.out.println("Enter 1 or 2.");
  55.                     }
  56.                     break;
  57.                 case 2:
  58.                     switch(takeInt("1.Normal 2.Uniform")){
  59.                         case 1:
  60.                             do{sigma = takeDouble("sigma");}while(sigma<0);
  61.                             do{mew = takeDouble("mew");}while(mew<0);
  62.                             do{n = takeInt("n");}while(n<1);
  63.                             for(int i = 0; i <=n ; i++)
  64.                                 System.out.println("p("+i+") = "+normal(sigma, mew, i));
  65.                             break;
  66.                         case 2:
  67.                             do{a = takeInt("a");}while(a<0);
  68.                             do{b = takeInt("b");}while(b<=a);
  69.                             for(int i = 0; i < b+6; i++)
  70.                                 System.out.println("p("+i+") = "+uniform(a, b, i));
  71.                             break;
  72.                         default:
  73.                             System.out.println("Enter 1 or 2.");
  74.                     }
  75.                     break;
  76.                 case 3: return;
  77.                 default:
  78.                     System.out.println("Enter a number from 1 to 3.");
  79.             }
  80.         }
  81.     }
  82. }
Add Comment
Please, Sign In to add comment