如何获得用户创建的C中某个范围内的伪随机数

时间:2019-02-12 09:31:01

标签: c random segmentation-fault

我使用的是种子0。我无法正确生成数量的不同数字。似乎只是输出输入的数字,然后输出一个数字。

这应该是询问用户要在0到99范围内生成多少个数字,然后生成那么多数字并输出生成的100个不同的数字。尝试更改我声明包含随机数的变量的位置。我不确定我还能尝试什么。

#include <stdio.h>
#include <stdlib.h>

int main (void) {

        srand(0);

        int numRandoms = 0;
        int i = 0;
        int difNums = 0;

        printf("How many random numbers to generate:\n");
        scanf("%d", &numRandoms);

        int ranNums[numRandoms];



        for (i = 0; i < numRandoms; ++i) {

                ranNums[i] = (rand () % 100);
        }

        for (i = 1; i <= numRandoms; ++i) {

                if (ranNums[i] != ranNums[i - 1]) {
                        ++difNums;
                }
        }


        printf("%d out of 100 numbers were generated after %d attempts\n", difNums, numRandoms);

        return 0;
}

用户输入1时,预期输出: “ 1次尝试后,每100个数字中就有1个产生” 我得到“ 1次尝试后生成的100个数字中有0个”

当用户输入25时,预期输出: “在25次尝试后生成了100个数字中的23个” 我得到“ 25次尝试后生成的100个数字中有24个”

当用户输入250时,预期输出: “经过250次尝试,生成了100个号码中的93个” 我得到“ 250次尝试后生成的100个数字中有247个”

当用户输入1000000时,预期输出: “ 1,000,000次尝试后生成了100个数字中的100个” 我收到“分段错误(核心已转储)”

0 个答案:

没有答案