# Roll a die

`12345678910` | ```
#include <random>
int main()
{
std::random_device random_device;
std::mt19937 random_engine{random_device()};
std::uniform_int_distribution<int> die_distribution{1, 6};
int die_roll = die_distribution(random_engine);
}
``` |

This pattern is licensed under the CC0 Public Domain Dedication.

## Intent

Generate a random integer according to a uniform distribution.

## Description

The `std::random_device`

on line 5
provides a source of uniform non-deterministic random numbers
(where such a source is available). We use this to seed the
Mersenne Twister random number engine,
`std::mt19937`

, on
line 6. Consider other random number
engines
for different properties.

On line 7, we create a
`std::uniform_int_distribution`

representing a uniform random distribution of integers from 1 to 6
inclusive. That is, each value from 1 to 6 has an equal chance of
occurring.

Finally, we generate a random number from the random engine, distributed according to the uniform integer distribution (line 9). This gives us a random integer from 1 to 6, as though we had rolled a 6-sided die.

To generate further random numbers, simply call
`die_distribution(random_engine)`

again.