在C中生成随机数组

Mit*_*tro 1 c openvms

我正在使用OpenVMS在C中开发,我已经完成了一个代码,该代码放入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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我显示每个数字生成的次数时,我看到数字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]
Run Code Online (Sandbox Code Playgroud)

谢谢你们

Dan*_*her 5

    int vet[1000], fre[50];


    for(i=0;i<51;i++){
            printf("The number %d  was generated %d times\n", i, fre[i]);
    }
Run Code Online (Sandbox Code Playgroud)

问题1:您声明fre有50个元素,但是您使用51.

问题2:fre未初始化.

int vet[1000], fre[51] = {0};
Run Code Online (Sandbox Code Playgroud)

应该给你合理的输出.