View source code
Display the source code in std/random.d from which this page was generated on
github.
Improve this page
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.
Page wiki
View or edit the community-maintained wiki page associated with this page.
Function std.random.dice
Rolls a dice
with relative probabilities stored in
. Returns the index in proportions
that was chosen.
proportions
Prototypes
size_t dice(Rng, Num)( Rng rnd, Num[] proportions ) if (isNumeric!Num && isForwardRange!Rng); size_t dice(R, Range)( R rnd, Range proportions ) if (isForwardRange!Range && isNumeric!(ElementType!Range) && !isArray!Range); size_t dice(Range)( Range proportions ) if (isForwardRange!Range && isNumeric!(ElementType!Range) && !isArray!Range); size_t dice(Num)( Num[] proportions ) if (isNumeric!Num);
Parameters
Name | Description |
---|---|
rnd | (optional) random number generator to use; if not
specified, defaults to
|
proportions | forward range or list of individual values whose elements correspond to the probabilities with which to choose the corresponding index value |
Returns
Random
variate drawn from the index values
[0, ... proportions.length
- 1], with the probability
of getting an individual index value i
being proportional to
.
proportions
[i]
Example
auto x = dice(0.5, 0.5); // x is 0 or 1 in equal proportions auto y = dice(50, 50); // y is 0 or 1 in equal proportions auto z = dice(70, 20, 10); // z is 0 70% of the time, 1 20% of the time, // and 2 10% of the time
Authors
Andrei Alexandrescu
Masahiro Nakagawa (Xorshift
random generator)
Joseph Rushton Wakeling (Algorithm D for random sampling)