Я разрабатываю на C с использованием OpenVMS, я сделал код, который помещает массив из 1001 (0-1000) элементов, 1000 (0-999) случайных чисел от 0 до 50. Вот код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(){
int vet[1000], fre[50];
int i;
srand(time(NULL));
for(i=0;i<1000;i++){
vet[i]=(rand()%51);
}
for(i=0;i<1000;i++){
printf("%d\n", vet[i]);
}
for(i=0;i<1000;i++){
fre[vet[i]]=fre[vet[i]]+1;
}
for(i=0;i<51;i++){
printf("The number %d was generated %d times\n", i, fre[i]);
}
}
Когда я показываю, сколько раз было сгенерировано каждое число, я увидел, что число 50 имеет большое число, иногда более чем в два раза больше, чем другие числа, кто-нибудь может мне помочь?
РЕШЕНО Код, который работает Сейчас я должен использовать srand()
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(){
int vet[1000], fre[51] = {0};
int i;
srand(time(NULL));
for(i=0;i<1000;i++){
vet[i]=(rand()%51);
}
for(i=0;i<1000;i++){
printf("%d\n", vet[i]);
}
for(i=0;i<1000;i++){
fre[vet[i]]=fre[vet[i]]+1;
}
for(i=0;i<51;i++){
printf("The number %d was generated %d times\n", i, fre[i]);
}
}
[EOB]
Спасибо всем
rand()
PRNG очень низкого качества. Если вы d требуют высококачественного потока PRN. Если GSL компилируется на OpenVMS, он поставляется со многими PRNG. В крайнем случае OpenVMS поддерживаетdrand48
PRNG. На боковом узлеfre
никогда не инициализируется (все 0). - person Hristo Iliev   schedule 10.12.2012