我在C中使用gettimeofday()函数创建了一个随机数生成器。现在,我需要使用Knuth开发的统计或经验方法来评估它。我彻底搜索了相同的内容,但找不到可行的解决方案。或者我可能错了。请帮我按照上述标准评估这个RNG。
#include <sys/time.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int* randgen(int num, int limit){
char buffer[30];
struct timeval tv;
time_t curtime;
gettimeofday(&tv, NULL);
int* numbers = malloc(sizeof(int)*num);
int i = 0;
int j;
while(num != 0){
gettimeofday(&tv, NULL);
for(j = 0; j < 1000; j++);
numbers[i] = tv.tv_usec % (limit+1);
num--;
i++;
}
return numbers;
}
int main(void)
{
FILE *fp;
fp = fopen("random.txt","w+");
printf("\nEnter the number of random integers needed\t:\t");
int num;
scanf("%d",&num);
printf("\nEnter the MAX limit for the random numbers\t:\t");
int limit;
scanf("%d",&limit);
int* result = randgen(num,limit);
int i = 0;
printf("\n");
for( i = 0 ; i < num ; i++ ){
printf(" %d ",*(result+i));
fprintf(fp,"%d ",*(result+i));
}
return 0;
}
答案 0 :(得分:2)
George Marsaglia's test suite is still a reference。一般来说,你可以看看他的工作,有很多关于伪随机生成器和所有实用方面的知识。