Facebook
From Red Penguin, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 274
  1. #include<iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6. double tab[5][5];
  7.  
  8. double Px[5];
  9. double Fx[5];
  10.  
  11.  
  12. double Pywarx[5][5];
  13.  
  14. double Fywarx[5][5];
  15.  
  16.  
  17. double random1,random2;
  18.  
  19. int x, y;
  20. int ile[5][5];
  21.  
  22.  
  23.  
  24. int main()
  25. {
  26.         srand(time(0));
  27.  
  28.         int size = 5;
  29.         tab[1][1] = 0.2;
  30.         tab[1][3] = 0.4;
  31.         tab[2][1] = 0.1;
  32.         tab[3][4] = 0.05;
  33.         tab[4][1] = 0.2;
  34.         tab[4][3] = 0.05;
  35.  
  36.  
  37.         for (int k = 1; k < 5; k++)
  38.         {
  39.                 for (int z = 1; z < 5; z++)
  40.                         Px[k] += tab[k][z];
  41.         }
  42.         for (int k = 1; k < 5; k++)
  43.                 Fx[k] = Fx[k - 1] + Px[k];
  44.  
  45.  
  46.  
  47.         for (int k = 1; k < 5; k++)
  48.                 for (int z = 1; z < 5; z++)
  49.                         Pywarx[k][z] = tab[z][k] / Px[z]; //najpierw y
  50.  
  51.  
  52.  
  53.         for (int k = 1; k < 5; k++)
  54.                 for (int z = 1; z < 5; z++)
  55.                         Fywarx[k][z] = Fywarx[k - 1][z] + Pywarx[k][z];
  56.  
  57.  
  58.  
  59.         for (int k = 1; k <= 100000; k++)
  60.         {
  61.                 random1 = ((double)rand() / (RAND_MAX));
  62.  
  63.  
  64.                 for (int z = 1; z < 5; z++)
  65.                         if (random1 <= Fx[z])
  66.                         {
  67.                                 x = z;
  68.                                 break;
  69.                         }
  70.                 random2 = ((double)rand() / (RAND_MAX));
  71.  
  72.  
  73.  
  74.                 for (int z = 1; z < 5; z++)
  75.                         if (random2 <= Fywarx[z][x])
  76.                         {
  77.                                 y = z;
  78.                                 break;
  79.                         }
  80.  
  81.  
  82.                 ile[x][y] += 1;
  83.  
  84.  
  85.         }
  86.  
  87.  
  88.         for (int k = 1; k < 5; k++)
  89.         {
  90.                 for (int z = 1; z < 5; z++)
  91.                         cout << ile[k][z] << " ";
  92.                 cout << endl;
  93.         }
  94.  
  95.  
  96.  
  97.  
  98.         return 0;
  99. }