https://m.jb51.net/article/170285.htm
这是我想要的结果,下边是我敲的,开头会报错,因为我是dev-c++直接新建源代码,这个报错该怎么改呢?
这是二楼老哥的代码
如果不需要排序,把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