24 Numerics library [numerics]

24.7 Random number generation [rand]

24.7.2 Requirements [rand.req]

24.7.2.3 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.
[Note
:
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(); requires Same<decltype(G::min()), invoke_result_t<G&>>;
      G::max(); requires Same<decltype(G::max()), 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&>.