为数组分配一个随机值
Assigning a random value to an array
我正在尝试
- 删除数组中的信息 10 "spots".
- 用 (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;
}
首先,您需要将 srand(time(NULL));
移出循环。
否则,因为,time()
的时间粒度是1秒,一秒内,如果在循环中多次调用(一秒内,大概) ,它将使用相同的 seed 重新初始化 PNRG,所有下一次调用 rand()
都会给你相同的 random 数字.
现在,一旦你有了 随机 数字,你需要 将它分配 给每个数组成员,比如 numbers[i] = randNumber;
在循环内部,但还有更多内容。你的循环,目前关闭了一个。你需要改变
for (int i = 0; i <= 10; i++)
到
for (int i = 0; i < 10; i++)
保持在界限内。
你的数组大小是10,这个循环运行了11次,导致溢出。这将解决它:
for (int i = 0; i < 10; i++)
同时从循环体内删除循环迭代器 i
的递增。删除行:
i++;
我正在尝试
- 删除数组中的信息 10 "spots".
- 用 (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;
}
首先,您需要将 srand(time(NULL));
移出循环。
否则,因为,time()
的时间粒度是1秒,一秒内,如果在循环中多次调用(一秒内,大概) ,它将使用相同的 seed 重新初始化 PNRG,所有下一次调用 rand()
都会给你相同的 random 数字.
现在,一旦你有了 随机 数字,你需要 将它分配 给每个数组成员,比如 numbers[i] = randNumber;
在循环内部,但还有更多内容。你的循环,目前关闭了一个。你需要改变
for (int i = 0; i <= 10; i++)
到
for (int i = 0; i < 10; i++)
保持在界限内。
你的数组大小是10,这个循环运行了11次,导致溢出。这将解决它:
for (int i = 0; i < 10; i++)
同时从循环体内删除循环迭代器 i
的递增。删除行:
i++;