C 将随机值赋给数组

C 将随机值赋给数组,c,arrays,srand,C,Arrays,Srand,我正在努力 在一个有10个“点”的数组中删除信息 用(10)个随机数填充数组 我的密码到时间了 int main() { int numbers[10] = { 0 }; int randNumber = 0; int i = 0; for (int i = 0; i <= 10; i++) { srand(time(NULL)); randNumber = rand() % 10 + 1; prin

我正在努力

  • 在一个有10个“点”的数组中删除信息
  • 用(10)个随机数填充数组
  • 我的密码到时间了

    int main()
    {
        int numbers[10] = { 0 };
        int randNumber = 0;
        int i = 0;
    
        for (int i = 0; i <= 10; i++)
        {
            srand(time(NULL));
            randNumber = rand() % 10 + 1;
            printf("Random number saved in the array: %d\n", randNumber);
            i++;
        }
    
        getchar();
        getchar();
        return 0;
    }
    
    intmain()
    {
    整数[10]={0};
    int randNumber=0;
    int i=0;
    
    对于(inti=0;i首先,您需要将
    srand(time(NULL));
    移出循环

    否则,因为,
    time()
    的时间粒度为1秒,在1秒内,如果在循环中多次调用(可能在1秒内),它将使用相同的种子重新初始化PNRG,并且对
    rand()
    的所有下一次调用都将给出相同的随机数

    现在,一旦你有了随机数,你需要把它分配给每个数组成员,就像
    numbers[i]=randNumber;
    在循环中一样,但是还有更多。你的循环,目前是关闭一个。你需要改变

      for (int i = 0; i <= 10; i++)
    

    for(int i=0;i首先,您需要将
    srand(time(NULL));
    移出循环

    否则,因为,
    time()
    的时间粒度为1秒,在1秒内,如果在循环中多次调用(可能在1秒内),它将使用相同的种子重新初始化PNRG,并且对
    rand()
    的所有下一次调用都将给出相同的随机数

    现在,一旦你有了随机数,你需要把它分配给每个数组成员,就像
    numbers[i]=randNumber;
    在循环中一样,但是还有更多。你的循环,目前是关闭一个。你需要改变

      for (int i = 0; i <= 10; i++)
    

    for(int i=0;i您的数组大小为10,此循环运行11次,导致溢出。这将解决此问题:

    for (int i = 0; i < 10; i++)
    

    您的数组大小为10,此循环运行11次,导致溢出。这将解决此问题:

    for (int i = 0; i < 10; i++)
    

    将值分配给数组。好的,但是如果随机函数在for循环之外,它会不会只创建一个随机数?(至少在我将它移到外面时会创建一个随机数)。我将它放入for循环的目的是在每次循环运行时创建一个新的随机数。
    srand()
    不会创建随机数。
    rand()
    实际上会给你随机数。
    srand(time(NULL))
    表示“选择伪随机数序列
    1474983934
    ”(
    1474983935
    在下一秒)。之后,
    rand()
    表示“选择所选序列中的下一个数字”。如果总是重新启动相同的序列并总是选择其中的第一个数字,则始终会得到相同的数字。解决方案:将
    srand()
    调用移到循环之外。您的数字必须在1到10之间吗?如果是,您可能希望从按顺序为(i=0;i<10;i++)数字[i]赋值开始=i+1;
    ),然后对数组执行一次操作。将值分配给数组。好的,但是如果随机函数在for循环之外,它会不会只创建一个随机数?(至少在我将其移到外面时会创建一个随机数)。我将其放入for循环的目的是每次循环运行时创建一个新的随机数。
    srand()
    不会创建随机数。
    rand()
    实际上会给你随机数。
    srand(time(NULL))
    表示“选择伪随机数序列
    1474983934
    ”(
    1474983935
    在下一秒)。之后,
    rand()
    表示“选择所选序列中的下一个数字”。如果总是重新启动相同的序列并总是选择其中的第一个数字,则始终会得到相同的数字。解决方案:将
    srand()
    调用移到循环之外。您的数字必须在1到10之间吗?如果是,您可能希望从按顺序为(i=0;i<10;i++)数字[i]赋值开始=i+1;
    ),然后在阵列上执行一次测试。