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
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;
),然后在阵列上执行一次测试。