If implementation limitations
prevent generating nondeterministic random numbers,
the implementation may employ a random number engine
.
class random_device {
public:
    using result_type = unsigned int;
    static constexpr result_type min() { return numeric_limits<result_type>::min(); }
  static constexpr result_type max() { return numeric_limits<result_type>::max(); }
    random_device() : random_device(implementation-defined) {}
  explicit random_device(const string& token);
    result_type operator()();
    double entropy() const noexcept;
  // no copy functions
  random_device(const random_device& ) = delete;
  void operator=(const random_device& ) = delete;
};