#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==