我一直在研究随机数生成器,它创建 6 个唯一的随机数 1-49,我可以让它工作,所以有 6 个随机数 1-49,或 6 个唯一的随机数,但不是以上所有的同时。我可以获取要编译的代码,但每次我尝试在不同位置使用 % 49 +1
时它都会崩溃。
我使用的代码是:
{
int numbers [SIZE];
int i, j, n;
srand (time(NULL));
for (i = 0; i < SIZE; i++)
numbers[i] = i;
for(i = 0; i < SIZE; i++)
{
j = rand() % 49 + 1;
n = numbers[j];
numbers[j] = numbers[i];
numbers[i] = n;
}
for (i = 0; i < SIZE; i++)
MyOutputDebugString ("%d\n", numbers[i]);
SIZE 定义为 6。
谢谢
最佳答案
SIZE is defined as 6.
所以,你的数组 numbers
就像
int numbers [6];
一次
j = rand() % 49 + 1;
被执行,j
会在in [ 1;之间49 ],所以,如果它 > 5,在这一行,你将有一个超出范围的索引::
n = numbers[j];
关于c - 唯一的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11989458/