2018
2018
is often determined statistically.
2019
2019
\end{note}
2020
2020
2021
-
\pnum
2022
-
A class \tcode{G}
2023
-
satisfies the requirements
2024
-
of a \term{uniform random bit generator}
2025
-
if the expressions shown
2026
-
in \tref{UniformRandomBitGenerator}
2027
-
are valid and have the indicated semantics,
2028
-
and if \tcode{G} also satisfies all other requirements
2029
-
of this subclause \ref{rand.req.urng}.
2030
-
In that Table and throughout this subclause:
2031
-
\begin{enumeratea}
2032
-
\item
2033
-
\tcode{T} is the type named by
2034
-
\tcode{G}'s associated \tcode{result_type},
2035
-
and
2036
-
\item
2037
-
\tcode{g} is a value of \tcode{G}.
2038
-
\end{enumeratea}
2039
-
2040
-
\begin{libreqtab4d}
2041
-
{Uniform random bit generator requirements}
2042
-
{tab:UniformRandomBitGenerator}
2043
-
\\ \topline
2044
-
\lhdr{Expression}
2045
-
& \chdr{Return type}
2046
-
& \chdr{Pre/post-condition}
2047
-
& \rhdr{Complexity}
2048
-
\\ \capsep
2049
-
\endfirsthead
2050
-
\hline
2051
-
\lhdr{Expression}
2052
-
& \chdr{Return type}
2053
-
& \chdr{Pre/post-condition}
2054
-
& \rhdr{Complexity}
2055
-
\\ \capsep
2056
-
\endhead
2057
-
\indextext{\idxcode{result_type}!uniform random bit generator requirement}%
2058
-
\tcode{G::result_type}
2059
-
& \tcode{T}
2060
-
& \tcode{T} is an unsigned integer type\iref{basic.fundamental}.
2061
-
& compile-time
2062
-
\\ \rowsep
2063
-
\tcode{g()}%
2064
-
\indextext{\idxcode{operator()}!uniform random bit generator requirement}
2065
-
& \tcode{T}
2066
-
& Returns a value in the closed interval
2067
-
$[$\tcode{G::min()}, \tcode{G::max()}$]$.
2068
-
& amortized constant
2069
-
\\ \rowsep
2070
-
\tcode{G::min()}%
2071
-
\indextext{\idxcode{min}!uniform random bit generator requirement}
2072
-
& \tcode{T}
2073
-
& Denotes the least value potentially returned
2074
-
by \tcode{operator()}.
2075
-
& compile-time
2076
-
\\ \rowsep
2077
-
\tcode{G::max()}
2078
-
\indextext{\idxcode{max}!uniform random bit generator requirement}
2079
-
& \tcode{T}
2080
-
& Denotes the greatest value potentially returned
2081
-
by \tcode{operator()}.
2082
-
& compile-time
2083
-
\\
2084
-
\end{libreqtab4d}
2085
-
2086
-
\pnum
2087
-
The following relation shall hold:
2088
-
\tcode{G::min() < G::max()}.
2089
-
\indextext{requirements!uniform random bit generator|)}%
2090
-
\indextext{uniform random bit generator!requirements|)}
2091
-
2092
-
\pnum
2093
-
The \libconcept{UniformRandomBitGenerator} concept is a slight relaxation of the
2094
-
uniform random bit generator requirements, in that it does not require a nested
2095
-
\grammarterm{typedef-name} \tcode{result_type}.
2096
-
2097
2021
\begin{codeblock}
2098
2022
template<class G>
2099
2023
concept UniformRandomBitGenerator =
2105
2029
\end{codeblock}
2106
2030
2107
2031
\pnum
2108
-
Let \tcode{g} be an object of type \tcode{G}.
2109
-
\tcode{\libconcept{UniformRandomBitGenerator}<G>} is satisfied only if
2032
+
Let \tcode{g} be an object of type \tcode{G}. \tcode{G} models
2033
+
\libconcept{UniformRandomBitGenerator} only if
2110
2034
2111
2035
\begin{itemize}
2112
2036
\item both \tcode{G::min()} and \tcode{G::max()} are constant
2117
2041
\item \tcode{g()} has amortized constant complexity.
2118
2042
\end{itemize}
2119
2043
2044
+
\indextext{requirements!uniform random bit generator|)}%
2045
+
\indextext{uniform random bit generator!requirements|)}%
2046
+
\pnum
2047
+
A class \tcode{G} meets the \term{uniform random bit generator} requirements if
2048
+
\tcode{G} models \libconcept{UniformRandomBitGenerator},
2049
+
\tcode{invoke_result_t<G\&>} is an unsigned integer type\iref{basic.fundamental},
2050
+
and
2051
+
\tcode{G} provides a nested \grammarterm{typedef-name} \tcode{result_type}
2052
+
that denotes the same type as \tcode{invoke_result_t<G\&>}.
2053
+
2054
+
2120
2055
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2121
2056
% Random Number Engine requirements:
2122
2057
2291
2226
\state{e}{i+1} $= \mathsf{TA}($\state{e}{i}$)$
2292
2227
and returns
2293
2228
$\mathsf{GA}($\state{e}{i}$)$.
2294
-
& per \tref{UniformRandomBitGenerator}
2229
+
& per \ref{rand.req.urng}
2295
2230
\\ \rowsep
2296
2231
\tcode{e.discard(z)}%
2297
2232
\indextext{\idxcode{discard}!random number engine requirement}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4