C++ rand()函数卡退

问题遇到的现象和发生背景

使用rand函数的时候,将生成的随机数a当作参数放到了下一需要生成的随机数b中,程序会在运行的时候突然结束

问题相关代码,请勿粘贴截图
int main() {
    srand(time(NULL));
    int a;
    int n = 20;
    int b;
    while (1) {
        a = rand() % n + 1, b = rand() % (n - a) + 1;
        cout << a << "\t" << b << endl;
    }
    return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

定义一个random的随机数打表生成器,但是太长了,虽然解决了生成的问题,但能使用的范围有限。

我想要达到的结果

不会再出现突然停止运行的情况,并且不用再一次打表

你这代码是有问题的啊。如果随机数是n-1的话,那么a的值就是n,那b就是随机数对0进行求余,会崩溃掉的

建议在末尾添加
system("pause");
前面修改;
srand((int)time(NULL));