#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;
}