25 Numerics library [numerics]

25.6 Random number generation [rand]

25.6.2 Requirements [rand.req] Uniform random bit generator requirements [rand.req.urng]

A uniform random bit generator g of type G is a function object returning unsigned integer values such that each value in the range of possible results has (ideally) equal probability of being returned.
The degree to which g's results approximate the ideal is often determined statistically.
end note
template<class G>
  concept UniformRandomBitGenerator =
    Invocable<G&> && UnsignedIntegral<invoke_result_t<G&>> &&
    requires {
      { G::min() } -> Same<invoke_result_t<G&>>;
      { G::max() } -> Same<invoke_result_t<G&>>;
Let g be an object of type G.
G models UniformRandomBitGenerator only if
A class G meets the uniform random bit generator requirements if G models UniformRandomBitGenerator, invoke_­result_­t<G&> is an unsigned integer type ([basic.fundamental]), and G provides a nested typedef-name result_­type that denotes the same type as invoke_­result_­t<G&>.