#include <bits/stdc++.h>
using namespace std;
mt19937 rd; int seed, vis[101];
inline int rnd(int l, int r) { return rd() % (r - l + 1) + l; }
vector <int> v;
signed main() {
cin >> seed; rd.seed(seed);
for (int i = 1; i <= 20; i++) {
int p = rnd(11, 100);
if (vis[p]) i--;
else v.push_back(p);
}
sort(v.begin(), v.end());
for (int x : v) cout << x << " ";
}
随机选到 p 后,如果 visp 就重新选。
但是并没有在选择成功后标记 visp。导致可能有重复选手。
比如 seed=1000 时,98 名会选到两次。