fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. // probability that j new good elements are produced
  11. static double prob(int n, int k, int j) {
  12. if( j < 0 || j > k ) return 0;
  13. return factd(n - (j + 1)) * factd(k) * (n - k) / (factd(n) * factd(k - j));
  14. }
  15.  
  16. // probabilities that after m experiments we have j good elements
  17. static double[] probV(int m, int n, int k) {
  18. double[] p = new double[k + 1];
  19. if( m == 0 ) {
  20. p[0] = 1.0;
  21. } else {
  22. double[] pa = probV(m - 1, n, k); // probabilities from previous experiment
  23. for( int j = 0; j <= k; j++ ) {
  24. for( int ja = 0; ja <= j; ja++ ) {
  25. int dj = j - ja; // delta: new elements
  26. p[j] += pa[ja] * prob(n - ja, k - ja, dj);
  27. }
  28. }
  29. }
  30. return p;
  31. }
  32.  
  33. static double factd(int n) {
  34. double f = 1.0;
  35. for( int nn = 2; nn <= n; nn++ )
  36. f *= nn;
  37. return f;
  38. }
  39.  
  40. public static void main (String[] args) throws java.lang.Exception
  41. {
  42. int n = 8;
  43. int k = 4;
  44. for( int m = 1; m <= 10; m++ ) {
  45. double[] p = probV(m, n, k);
  46. System.out.println("m=" + m + " p=" + Arrays.toString(p));
  47. }
  48. }
  49. }
Success #stdin #stdout 0.12s 320576KB
stdin
Standard input is empty
stdout
m=1 p=[0.5, 0.2857142857142857, 0.14285714285714285, 0.05714285714285714, 0.014285714285714285]
m=2 p=[0.25, 0.30612244897959184, 0.24829931972789115, 0.14503401360544216, 0.05054421768707482]
m=3 p=[0.125, 0.24635568513119532, 0.28871072238419176, 0.23151149983803043, 0.10842209264658242]
m=4 p=[0.0625, 0.17648896293211158, 0.28071829638885026, 0.2974965184259645, 0.18279622225307354]
m=5 p=[0.03125, 0.11870797881834946, 0.24649952033507488, 0.33659702287480153, 0.2669454779717739]
m=6 p=[0.015625, 0.07676170218191397, 0.20271386464767358, 0.35036316415891067, 0.3545362690115016]
m=7 p=[0.0078125, 0.04832811553252227, 0.1593066341980435, 0.344013185006346, 0.4405395652630881]
m=8 p=[0.00390625, 0.029848208875727006, 0.12112852723655916, 0.32366195889970045, 0.5214550549880131]
m=9 p=[0.001953125, 0.018172190786129715, 0.08983844688410429, 0.2948649458734021, 0.5951712914563637]
m=10 p=[9.765625E-4, 0.010942144734931264, 0.06536337029020182, 0.2620373048148024, 0.6606806176600644]