#include #include #include #include int main(int argc, char *argv[]) { const int n = 100; int perm[n]; double e = 0; srand(time(NULL)); for (int z = 0; z < 30; z++) { for (int j = 0; j < n; j++) { perm[j] = j; } int k = n; int idx; int count = 0; bool flag = 1; int N = 100000000; int j; for (int i = 0; i < N; i++) { j = rand() % (n - 1); int tmp = perm[j]; perm[j] = perm[j + 1]; perm[j + 1] = tmp; k += (perm[j] == j) + (perm[j + 1] == j + 1) - (perm[j] == j + 1) - (perm[j + 1] == j); if (k == 0 && flag) { flag = 0; idx = i; } else if (k == 0) { count++; } } e += (double)(N-idx) / count; printf("e = %f\n", (double)N / count); } printf("średnie e = %f\n", e / 30); }