tmp/tmpar9uo893/{from.md → to.md}
RENAMED
|
@@ -13,22 +13,38 @@ distribution*. Such distribution parameters are identified in this
|
|
| 13 |
context by writing, for example, p(z | a,b) or P(zᵢ | a,b), to name
|
| 14 |
specific parameters, or by writing, for example, p(z |{`p`}) or
|
| 15 |
P(zᵢ |{`p`}), to denote a distribution’s parameters `p` taken as a
|
| 16 |
whole.
|
| 17 |
|
| 18 |
-
A class `D`
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
|
| 24 |
-
|
| 25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
-
`
|
| 28 |
-
[[
|
| 29 |
-
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
The sequence of numbers produced by repeated invocations of `d(g)` shall
|
| 32 |
be independent of any invocation of `os << d` or of any `const` member
|
| 33 |
function of `D` between any of the invocations `d(g)`.
|
| 34 |
|
|
@@ -41,14 +57,14 @@ produce the same sequence of numbers as would repeated invocations of
|
|
| 41 |
It is unspecified whether `D::param_type` is declared as a (nested)
|
| 42 |
`class` or via a `typedef`. In this subclause [[rand]], declarations of
|
| 43 |
`D::param_type` are in the form of `typedef`s for convenience of
|
| 44 |
exposition only.
|
| 45 |
|
| 46 |
-
`P` shall
|
| 47 |
-
[[
|
| 48 |
-
[[
|
| 49 |
-
[[
|
| 50 |
|
| 51 |
For each of the constructors of `D` taking arguments corresponding to
|
| 52 |
parameters of the distribution, `P` shall have a corresponding
|
| 53 |
constructor subject to the same requirements and taking arguments
|
| 54 |
identical in number, type, and default values. Moreover, for each of the
|
|
|
|
| 13 |
context by writing, for example, p(z | a,b) or P(zᵢ | a,b), to name
|
| 14 |
specific parameters, or by writing, for example, p(z |{`p`}) or
|
| 15 |
P(zᵢ |{`p`}), to denote a distribution’s parameters `p` taken as a
|
| 16 |
whole.
|
| 17 |
|
| 18 |
+
A class `D` meets the requirements of a *random number distribution* if
|
| 19 |
+
the expressions shown in [[rand.req.dist]] are valid and have the
|
| 20 |
+
indicated semantics, and if `D` and its associated types also meet all
|
| 21 |
+
other requirements of this subclause [[rand.req.dist]]. In that Table
|
| 22 |
+
and throughout this subclause,
|
| 23 |
|
| 24 |
+
- `T` is the type named by `D`’s associated `result_type`;
|
| 25 |
+
- `P` is the type named by `D`’s associated `param_type`;
|
| 26 |
+
- `d` is a value of `D`, and `x` and `y` are (possibly `const`) values
|
| 27 |
+
of `D`;
|
| 28 |
+
- `glb` and `lub` are values of `T` respectively corresponding to the
|
| 29 |
+
greatest lower bound and the least upper bound on the values
|
| 30 |
+
potentially returned by `d`’s `operator()`, as determined by the
|
| 31 |
+
current values of `d`’s parameters;
|
| 32 |
+
- `p` is a (possibly `const`) value of `P`;
|
| 33 |
+
- `g`, `g1`, and `g2` are lvalues of a type meeting the requirements of
|
| 34 |
+
a uniform random bit generator [[rand.req.urng]];
|
| 35 |
+
- `os` is an lvalue of the type of some class template specialization
|
| 36 |
+
`basic_ostream<charT,` `traits>`; and
|
| 37 |
+
- `is` is an lvalue of the type of some class template specialization
|
| 38 |
+
`basic_istream<charT,` `traits>`;
|
| 39 |
|
| 40 |
+
where `charT` and `traits` are constrained according to [[strings]] and
|
| 41 |
+
[[input.output]].
|
| 42 |
+
|
| 43 |
+
`D` shall meet the *Cpp17CopyConstructible* (
|
| 44 |
+
[[cpp17.copyconstructible]]) and *Cpp17CopyAssignable* (
|
| 45 |
+
[[cpp17.copyassignable]]) requirements.
|
| 46 |
|
| 47 |
The sequence of numbers produced by repeated invocations of `d(g)` shall
|
| 48 |
be independent of any invocation of `os << d` or of any `const` member
|
| 49 |
function of `D` between any of the invocations `d(g)`.
|
| 50 |
|
|
|
|
| 57 |
It is unspecified whether `D::param_type` is declared as a (nested)
|
| 58 |
`class` or via a `typedef`. In this subclause [[rand]], declarations of
|
| 59 |
`D::param_type` are in the form of `typedef`s for convenience of
|
| 60 |
exposition only.
|
| 61 |
|
| 62 |
+
`P` shall meet the *Cpp17CopyConstructible* (
|
| 63 |
+
[[cpp17.copyconstructible]]), *Cpp17CopyAssignable* (
|
| 64 |
+
[[cpp17.copyassignable]]), and *Cpp17EqualityComparable* (
|
| 65 |
+
[[cpp17.equalitycomparable]]) requirements.
|
| 66 |
|
| 67 |
For each of the constructors of `D` taking arguments corresponding to
|
| 68 |
parameters of the distribution, `P` shall have a corresponding
|
| 69 |
constructor subject to the same requirements and taking arguments
|
| 70 |
identical in number, type, and default values. Moreover, for each of the
|