#include <cstdint>
#include <vector>
#include <limits>
#include <ctime>
#include <cstdint>
#include <random>
#include <cstdlib>
#include <algorithm>

int main()
{
  const int NUMS = 100;
  int cds[NUMS];

  std::srand(static_cast<unsigned long>(std::time(nullptr)));
  auto rand = std::bind([]() { return std::rand(); });
  auto seed = [&rand](int n) {
    std::vector<std::uint32_t> v(n);
    std::generate(v.begin(), v.end(), rand);
    return std::seed_seq(v.begin(), v.end());
  }(10);

  std::mt19937 engine(seed);
  std::uniform_int_distribution<> dis(0, NUMS - 1);

  std::shuffle(cds, cds + NUMS, dis(engine));
}
