Search
View source code
Display the source code in std/random.d from which this page was generated on github.
Report a bug
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Function `std.random.uniform01`

Generates a uniformly-distributed floating point number of type `T` in the range [0, 1). If no random number generator is specified, the default RNG `rndGen` will be used as the source of randomness.

``` T uniform01(T)() if (isFloatingPoint!T); T uniform01(T, UniformRNG) (   ref UniformRNG rng ) if (isFloatingPoint!T && isUniformRNG!UniformRNG); ```

`uniform01` offers a faster generation of random variates than the equivalent `uniform!"[)"(0.0, 1.0)` and so may be preferred for some applications.

Parameters

NameDescription
rng (optional) random number generator to use; if not specified, defaults to `rndGen`

Returns

Floating-point random variate of type `T` drawn from the uniform distribution across the half-open interval [0, 1).

Example

``````import std.math.operations : feqrel;

auto rnd = MinstdRand0(42);

// Generate random numbers in the range in the range [0, 1)
auto u1 = uniform01(rnd);
assert(u1 >= 0 && u1 < 1);

auto u2 = rnd.uniform01!float;
assert(u2 >= 0 && u2 < 1);

// Confirm that the random values with the initial seed 42 are 0.000328707 and 0.524587
assert(u1.feqrel(0.000328707) > 20);
assert(u2.feqrel(0.524587) > 20);
``````

Authors

Andrei Alexandrescu Masahiro Nakagawa (Xorshift random generator) Joseph Rushton Wakeling (Algorithm D for random sampling) Ilya Yaroshenko (Mersenne Twister implementation, adapted from mir-random)