# Flip a biased coin

`12345678910` | ```
#include <random>
int main()
{
std::random_device random_device;
std::mt19937 random_engine{random_device()};
std::bernoulli_distribution coin_distribution{0.25};
bool outcome = coin_distribution(random_engine);
}
``` |

This pattern is licensed under the CC0 Public Domain Dedication.

## Intent

Generate a random boolean value according to a bernoulli 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::bernoulli_distribution`

representing a bernoulli distribution with a success probability of
`0.25`

. This can be thought of as a biased coin that will land on
heads only a quarter of the time.

Finally, we generate a random number from the random engine,
distributed according to the bernoulli distribution (line 9).
This gives us a boolean value that will be `true`

with `0.25`

probability and `false`

otherwise.