2001-11-01 15:43:20 +00:00
|
|
|
|
|
|
|
|
|
/* Copyright (C) 2001 Juha Yrj<72>l<EFBFBD> <juha.yrjola@iki.fi>
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "sc-test.h"
|
2001-11-24 13:32:52 +00:00
|
|
|
|
#include "opensc.h"
|
2001-11-01 15:43:20 +00:00
|
|
|
|
#include <unistd.h>
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <sys/time.h>
|
|
|
|
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
|
|
|
{
|
2001-11-04 14:08:38 +00:00
|
|
|
|
int i, c, r;
|
2001-11-01 15:43:20 +00:00
|
|
|
|
int freq[39];
|
|
|
|
|
struct timeval tv1, tv2;
|
|
|
|
|
u8 buf[14];
|
|
|
|
|
|
|
|
|
|
i = sc_test_init(&argc, argv);
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 39; i++)
|
|
|
|
|
freq[i] = 0;
|
|
|
|
|
c = 0;
|
|
|
|
|
while (1) {
|
|
|
|
|
u8 alkiot[39];
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 39; i++) {
|
|
|
|
|
alkiot[i] = i + 1;
|
|
|
|
|
}
|
|
|
|
|
if (c == 0)
|
|
|
|
|
gettimeofday(&tv1, NULL);
|
2001-11-04 14:08:38 +00:00
|
|
|
|
sc_lock(card);
|
|
|
|
|
r = sc_get_random(card, buf, 14);
|
|
|
|
|
sc_unlock(card);
|
|
|
|
|
if (r == 0) {
|
2001-11-01 15:43:20 +00:00
|
|
|
|
int i, jaljella = 39;
|
|
|
|
|
|
|
|
|
|
printf("Lottorivi: ");
|
|
|
|
|
for (i = 0; i < 7; i++) {
|
|
|
|
|
unsigned short s = buf[2*i] + (buf[2*i+1] << 8);
|
|
|
|
|
int lot = s % (jaljella+1);
|
|
|
|
|
int num = alkiot[lot];
|
|
|
|
|
|
|
|
|
|
alkiot[lot] = alkiot[jaljella-1];
|
|
|
|
|
jaljella--;
|
|
|
|
|
|
|
|
|
|
freq[num-1]++;
|
|
|
|
|
|
|
|
|
|
printf("%3d ", num);
|
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
2001-11-04 14:08:38 +00:00
|
|
|
|
} else {
|
|
|
|
|
fprintf(stderr, "get_random() failed: %s\n", sc_strerror(r));
|
|
|
|
|
sc_test_cleanup();
|
|
|
|
|
return 1;
|
2001-11-01 15:43:20 +00:00
|
|
|
|
}
|
|
|
|
|
c++;
|
|
|
|
|
if (c == 50) {
|
|
|
|
|
unsigned long long foo, foo2;
|
|
|
|
|
gettimeofday(&tv2, NULL);
|
|
|
|
|
foo = tv2.tv_sec * 1000 + tv2.tv_usec / 1000;
|
|
|
|
|
foo2 = tv1.tv_sec * 1000 + tv1.tv_usec / 1000;
|
|
|
|
|
printf("Time per one: %lld ms\n", (foo - foo2)/50);
|
|
|
|
|
printf("Frequencies:\n");
|
|
|
|
|
for (i = 0; i < 39; i++) {
|
2001-11-05 19:39:18 +00:00
|
|
|
|
printf("%3d: %-5d", i+1, freq[i]);
|
2001-11-17 00:11:29 +00:00
|
|
|
|
if (((i+1) % 10) == 0)
|
|
|
|
|
printf("\n");
|
2001-11-01 15:43:20 +00:00
|
|
|
|
}
|
|
|
|
|
printf("\n");
|
|
|
|
|
c = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
2001-11-04 14:08:38 +00:00
|
|
|
|
sc_test_cleanup();
|
|
|
|
|
return 0;
|
2001-11-01 15:43:20 +00:00
|
|
|
|
}
|