1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define N_MAX 256
int main(void)
{
unsigned short ep_min = 8;
unsigned short last_nb = 0, nb = 0, diff = 0, min = N_MAX, max = 0, min_diff = N_MAX, max_diff = 0, i = 0, count = 0, count_ite = 0;
unsigned range = (floor(N_MAX / ep_min) + (((N_MAX % ep_min) != 0)? 1: 0)), current_page = 0, last_page = 0;
srand( time(NULL) );
last_page = (rand() % range);
if (range <= 5) { return 0; }
for(; i < 15000; i++) {
// range - 3: une de moins pour l'ancienne, et 2 autres pour chaque côté
current_page = (last_page + 2 + rand() % (range - 3));
if (current_page >= range) { current_page -= range; }
nb = (current_page * ep_min + (1 + rand() % ep_min));
// Seulement pour tronquer la dernière page si (N_MAX % ep_min) != 0
if (nb > N_MAX) { nb = N_MAX; }
diff = ((nb > last_nb)? (nb - last_nb): (last_nb - nb));
if (diff < ep_min) { count++; }
if (nb > max) { max = nb; }
if (nb < min) { min = nb; }
if (diff > max_diff) { max_diff = diff; }
if (diff < min_diff) { min_diff = diff; }
printf("%d: %d -> %d (%d)\n", nb, last_page, current_page, diff);
last_nb = nb;
last_page = current_page;
}
printf("%d - Miss: %d - %d%% / %d - %d -> %d - %d, %d", range, count, ((count * 100) / 15000), count_ite, min, max, min_diff, max_diff);
return 0;
} |
Partager