c - 唯一的随机数

标签 c random

我一直在研究随机数生成器,它创建 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/

相关文章:

c++ - 封装 boost::random 以便于替换 rand()

javascript - 如何在 img 标签的 src 属性中包含一个随机数变量

java - 我需要在数组中生成 0 到 99 之间的 20 个随机值序列

c++ - 确定 HWND 是否代表顶级窗口的最佳方法是什么?

c - 从哪里可以找到 cp 命令的源代码?

c - 编写我的代码来寻找模式,但给了我最大的数字

opencv - 如何在 OpenCV 中用随机颜色绘制圆圈

c - 外部结构数组

c - 在Linux内核空间使用MD5

java - Switch语句: Random generator