Facebook
From Social Pelican, 3 Years ago, written in C.
Embed
Download Paste or View Raw
Hits: 48
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <stdbool.h>
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.     const int n = 100;
  9.     int perm[n];
  10.     double e = 0;
  11.     srand(time(NULL));
  12.     for (int z = 0; z < 30; z++)
  13.     {
  14.        
  15.         for (int j = 0; j < n; j++)
  16.         {
  17.             perm[j] = j;
  18.         }
  19.        
  20.         int k = n;
  21.         int idx;
  22.         int count = 0;
  23.         bool flag = 1;
  24.         int N = 100000000;
  25.         int j;
  26.         for (int i = 0; i < N; i++)
  27.         {
  28.             j = rand() % (n - 1);
  29.            
  30.             int tmp = perm[j];
  31.             perm[j] = perm[j + 1];
  32.             perm[j + 1] = tmp;
  33.  
  34.             k += (perm[j] == j) + (perm[j + 1] == j + 1) - (perm[j] == j + 1) - (perm[j + 1] == j);
  35.            
  36.             if (k == 0 && flag)
  37.             {
  38.                 flag = 0;
  39.                 idx = i;
  40.             }
  41.             else if (k == 0)
  42.             {
  43.                 count++;
  44.             }
  45.         }
  46.  
  47.         e += (double)(N-idx) / count;
  48.         printf("e = %f\n", (double)N / count);
  49.     }
  50.     printf("średnie e = %f\n", e / 30);
  51. }