#include <vector>
#include <set>
#include <iostream>
#include <random>
class Random
{
public:
Random() : rng( rd() ) { }
inline int getRandNum( int limit ) { return ( numbers(rng) % limit ); }
std::set<int> getRandSequence(int limit, int n);
private:
std::random_device rd;
std::mt19937 rng;
std::uniform_int_distribution<int> numbers;
};
std::set<int> Random::getRandSequence(int limit, int n)
{
std::set<int> generatedSequence;
while (generatedSequence.size() < n) //size() for set is O(1) if I'm not mistaken
generatedSequence.insert(getRandNum(limit));
return generatedSequence;
}
int main()
{
Random r;
auto sequence = r.getRandSequence(1000, 10);
std::cout << "Seq;uence: " << std::endl;
for (int number : sequence)
std::cout << number << std::endl;
std::cout << "End" << std::endl;
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmFuZG9tPgoKY2xhc3MgUmFuZG9tCnsKcHVibGljOgogIFJhbmRvbSgpIDogcm5nKCByZCgpICkgeyB9CgogIGlubGluZSBpbnQgZ2V0UmFuZE51bSggaW50IGxpbWl0ICkgeyByZXR1cm4gKCBudW1iZXJzKHJuZykgJSBsaW1pdCApOyB9CiAgc3RkOjpzZXQ8aW50PiBnZXRSYW5kU2VxdWVuY2UoaW50IGxpbWl0LCBpbnQgbik7Cgpwcml2YXRlOgogIHN0ZDo6cmFuZG9tX2RldmljZSByZDsKICBzdGQ6Om10MTk5Mzcgcm5nOwogIHN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPGludD4gbnVtYmVyczsKfTsKCnN0ZDo6c2V0PGludD4gUmFuZG9tOjpnZXRSYW5kU2VxdWVuY2UoaW50IGxpbWl0LCBpbnQgbikKewoJc3RkOjpzZXQ8aW50PiBnZW5lcmF0ZWRTZXF1ZW5jZTsKCXdoaWxlIChnZW5lcmF0ZWRTZXF1ZW5jZS5zaXplKCkgPCBuKSAvL3NpemUoKSBmb3Igc2V0IGlzIE8oMSkgaWYgSSdtIG5vdCBtaXN0YWtlbgoJCWdlbmVyYXRlZFNlcXVlbmNlLmluc2VydChnZXRSYW5kTnVtKGxpbWl0KSk7CglyZXR1cm4gZ2VuZXJhdGVkU2VxdWVuY2U7Cn0KCmludCBtYWluKCkKewoJUmFuZG9tIHI7CglhdXRvIHNlcXVlbmNlID0gci5nZXRSYW5kU2VxdWVuY2UoMTAwMCwgMTApOwoJc3RkOjpjb3V0IDw8ICJTZXE7dWVuY2U6ICIgIDw8IHN0ZDo6ZW5kbDsKCWZvciAoaW50IG51bWJlciA6IHNlcXVlbmNlKQoJCXN0ZDo6Y291dCA8PCBudW1iZXIgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8ICJFbmQiIDw8IHN0ZDo6ZW5kbDsKCglyZXR1cm4gMDsKfQ==