In addition to a few utilities,
four categories of entities are described:
*uniform random bit generators*,
*random number engines*,
*random number engine adaptors*,
and
*random number distributions*.

These categorizations are applicable
to types that meet the corresponding requirements,
to objects instantiated from such types,
and to templates producing such types when instantiated.

Each of the entities specified in [rand]
has an associated arithmetic type ([basic.fundamental])
identified as result_type.

With T as the result_type
thus associated with such an entity,
that entity is characterized:

- as
*boolean*or equivalently as*boolean-valued*, if T is bool; - otherwise
as
*integral*or equivalently as*integer-valued*, if numeric_limits<T>::is_integer is true; - otherwise
as
*floating-point*or equivalently as*real-valued*.