std.random.uniform - multiple declarations
Function uniform
Generates a number between a and b. The boundaries
parameter controls the shape of the interval (open vs. closed on
either side). Valid values for boundaries are "[]", "(]", "[)", and "()". The default interval
is closed to the left and open to the right. The version that does not
take urng uses the default generator rndGen.
auto auto uniform(string boundaries = "[)", T1, T2)
(
T1 a,
T2 b
)
if (!is(CommonType!(T1, T2) == void));
auto auto uniform(string boundaries = "[)", T1, T2, UniformRandomNumberGenerator)
(
T1 a,
T2 b,
ref UniformRandomNumberGenerator urng
)
if (isFloatingPoint!(CommonType!(T1, T2)) && isUniformRNG!UniformRandomNumberGenerator);
Parameters
| Name | Description |
|---|---|
| a | lower bound of the uniform distribution |
| b | upper bound of the uniform distribution |
| urng | (optional) random number generator to use;
if not specified, defaults to rndGen |
Returns
A single random variate drawn from the uniform distribution
between a and b, whose type is the common type of
these parameters
Example
auto gen = Random(unpredictableSeed);
// Generate an integer in [0, 1023]
auto a = uniform(0, 1024, gen);
// Generate a float in [0, 1)
auto b = uniform(0.0f, 1.0f, gen);
Example
Create an array of random numbers using range functions and UFCS
import std .array : array;
import std .range : generate, takeExactly;
int[] arr = generate!(() => uniform(0, 100)) .takeExactly(10) .array;
writeln(arr .length); // 10
assert(arr[0] >= 0 && arr[0] < 100);
Function uniform
Generates a uniformly-distributed number in the range [T for any integral or character type T. If no random
number generator is passed, uses the default rndGen.
auto auto uniform(T, UniformRandomNumberGenerator)
(
ref UniformRandomNumberGenerator urng
)
if (!is(T == enum) && (isIntegral!T || isSomeChar!T) && isUniformRNG!UniformRandomNumberGenerator);
auto auto uniform(T)
()
if (!is(T == enum) && (isIntegral!T || isSomeChar!T));
Parameters
| Name | Description |
|---|---|
| urng | (optional) random number generator to use;
if not specified, defaults to rndGen |
Returns
Random variate drawn from the uniform distribution across all
possible values of the integral or character type T.
Function uniform
Returns a uniformly selected member of enum E. If no random number
generator is passed, uses the default rndGen.
auto auto uniform(E, UniformRandomNumberGenerator)
(
ref UniformRandomNumberGenerator urng
)
if (is(E == enum) && isUniformRNG!UniformRandomNumberGenerator);
auto auto uniform(E)
()
if (is(E == enum));
Parameters
| Name | Description |
|---|---|
| urng | (optional) random number generator to use;
if not specified, defaults to rndGen |
Returns
Random variate drawn with equal probability from any
of the possible values of the enum E.
Example
enum Fruit { apple, mango, pear }
auto randFruit = uniform!Fruit();
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)