diff options
Diffstat (limited to 'spec/system.md')
| -rw-r--r-- | spec/system.md | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/spec/system.md b/spec/system.md index b62db9e5..15ada7b4 100644 --- a/spec/system.md +++ b/spec/system.md @@ -210,17 +210,17 @@ More accurately the modifier `β’_maxTime_` *may* fail if execution of `π½` ta ## Random generation -`β’MakeRand` initializes a deterministic pseudorandom number generator with seed value `π©`. `β’rand`, if it exists, is a globally accessible generator initialized at first use; this initialization should use randomness from an outside source if available. A random generator has the following member functions: +`β’MakeRand` initializes a deterministic pseudorandom number generator with seed value `π©`. `β’rand`, if it exists, is a globally accessible generator initialized at first use; this initialization should use randomness from an outside source if available. These random generators aren't required to be cryptographically secure and should always be treated as insecure. A random generator has the following member functions: | Name | Summary |-----------|------------------------------ | `Range` | A number, or array of shape `π¨`, selected from `βπ©` | `Deal` | A simple random sample of `π¨β£π©` elements of `βπ©` -| `Subset` | A sorted SRS of `π¨` elements of `βπ©` +| `Subset` | A sorted SRS of `βπ©`, with `π¨` elements if given For each of these functions, `π©` is a natural number. For `Range`, `π¨` must be a valid shape if given, and for `Deal` and `Subset` it's a natural number less than or equal to `π©`. All selections are made uniformly at random, that is, each possible result is equally likely. A simple random sample (SRS) of `k` elements from list `s` is a list of `k` distinct elements of `s` in any order. Both the choice of elements and their ordering must be uniformly random. [Recommended algorithms](../implementation/primitive/random.md#simple-random-sample) for SRS selection are variants of a partial Knuth shuffle. -When `π¨` isn't given, `Deal`'s result contains all elements of `βπ©`, making it a random shuffle of those values, or random permutation. In `Subset`, setting `π¨` to `π©` would instead always result in the list `βπ©`; because this is not useful, `π¨` must be provided. +When `π¨` isn't given, `Deal`'s result contains all elements of `βπ©`, making it a random shuffle of those values, or random permutation. In `Subset`, a random choice is made uniformly from the `2βπ©` subsets of `βπ©`, so that a subset of any length may be returned. In `Range`, `π©` may be `0`. In this case the result consists of floating-point numbers in the unit interval from 0 to 1. The numbers should have an overall uniform distribution, but their precision and whether the endpoints 0 and 1 are possible may depend on the implementation. |
