0

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;

}
4

1 に答える 1

2

George Marsaglia のテスト スイートは引き続き参考になります。一般に、彼の研究を調べることができます。疑似乱数発生器と実装のすべての実用的な側面について学ぶべきことがたくさんあります。

于 2013-01-09T19:22:24.563 に答える