想用c语言生成a个不重复且大于N小于M的随机数(a小于m-n)

https://m.jb51.net/article/170285.htm
这是我想要的结果,下边是我敲的,开头会报错,因为我是dev-c++直接新建源代码,这个报错该怎么改呢?

img

这是二楼老哥的代码

img

如果不需要排序,把set替换成unordered_set

#include <iostream>
#include <random>
#include <set>

using namespace std;

int main()
{
    int a, n, m;
    cout << "输入数值范围([n, m]): ";
    cin >> n >> m;
    cout << "输入随机数个数: ";
    cin >> a;
    if (m < 0 || n < 0 || n > m || a > (m - n + 1))
    {
        cerr << "范围错误\n";
        return 1;
    }
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<> distrib(n, m);
    set<int> s;
    while (s.size() < static_cast<size_t>(a))
        s.insert(distrib(gen));
    cout << "结果: ";
    for (auto v : s)
        cout << v << ' ';
    cout << endl;
    return 0;
}
$ g++ -Wall main.cpp
$ ./a.out
输入数值范围([n, m]): 1 100
输入随机数个数: 10
结果: 20 28 36 40 44 53 66 78 85 96