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
Name | Description |
---|---|
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 : 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)