|
| template<typename INTEGER = uint64_t, typename RANDOM = std::default_random_engine> |
| constexpr INTEGER | ghassanpl::random::integer (RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns a random integer of the given type.
|
| template<typename REAL = double, typename RANDOM = std::default_random_engine> |
| REAL | ghassanpl::random::percentage (RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns a random value between 0 and 1 of the given floating-point type.
|
| template<typename REAL = double, typename RANDOM = std::default_random_engine> |
| REAL | ghassanpl::random::normal (RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns a random value of the given floating-point type in a normal distribution.
|
| template<typename RANDOM = std::default_random_engine> |
| uint64_t | ghassanpl::random::dice (uint64_t n_sided, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns the result of throwing an n_sided die (1-N).
|
| template<typename RANDOM = std::default_random_engine> |
| uint64_t | ghassanpl::random::dice (uint64_t n_dice, uint64_t n_sided, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns the result of throwing n_dice number of n_sided dice.
|
| template<uint64_t N_SIDED, typename RANDOM = std::default_random_engine> |
| uint64_t | ghassanpl::random::dice (RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns the result of throwing an N_SIDED die (1-N).
|
| template<uint64_t N_DICE, uint64_t N_SIDED, typename RANDOM = std::default_random_engine> |
| uint64_t | ghassanpl::random::dice (RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns the result of throwing N_DICE number of N_SIDED dice.
|
| template<typename RANDOM = std::default_random_engine> |
| bool | ghassanpl::random::coin (RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns true or false randomly.
|
| template<typename RANDOM = std::default_random_engine, std::integral T> |
| T | ghassanpl::random::in_integer_range (T from, T to, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| template<typename RANDOM = std::default_random_engine, std::integral T> |
| T | ghassanpl::random::in_integer_range (T to, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| template<typename RANDOM = std::default_random_engine, std::floating_point T> |
| T | ghassanpl::random::in_real_range (T from, T to, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| template<typename RANDOM = std::default_random_engine, std::floating_point T> |
| T | ghassanpl::random::in_real_range (T to, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| template<typename RANDOM = std::default_random_engine, typename T> |
| auto | ghassanpl::random::in_range (T from, T to, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| template<typename T = float> |
| constexpr T | ghassanpl::random::halton_sequence (size_t index, size_t base=2) |
| template<typename RANDOM = std::default_random_engine> |
| bool | ghassanpl::random::with_probability (double probability, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns true with the given 0-1 probability, false otherwise.
|
| template<typename RANDOM = std::default_random_engine> |
| bool | ghassanpl::random::with_probability (double probability, double &result, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns true with the given 0-1 probability, false otherwise; stores the result of the 0-1 "roll" in result.
|
| template<typename RANDOM = std::default_random_engine> |
| bool | ghassanpl::random::one_in (size_t n, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns true with a one-in-n chance.
|
| template<typename RANDOM = std::default_random_engine, typename T> |
| void | ghassanpl::random::shuffle (T &cont, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Shuffles the cont container (as if by std::shuffle).
|
| template<typename RANDOM = std::default_random_engine, typename T> |
| auto | ghassanpl::random::iterator (T &cont, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns an iterator to a random element in cont.
|
| template<typename RANDOM = std::default_random_engine, typename T, typename PRED> |
| auto | ghassanpl::random::iterator_if (T &cont, PRED &&pred, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns an iterator to a random element in cont that matches pred.
|
| template<typename RANDOM = std::default_random_engine, typename T> |
| auto | ghassanpl::random::index (T &cont, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns an index of a random element in cont.
|
| template<typename RANDOM = std::default_random_engine, typename T, typename PRED> |
| auto | ghassanpl::random::index_if (T &cont, PRED &&pred, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns an index of a random element in cont that matches pred.
|
| template<typename RANDOM = std::default_random_engine, typename T> |
| auto * | ghassanpl::random::element (T &cont, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns an pointer to a random element in cont.
|
| template<typename RANDOM = std::default_random_engine, typename T, typename PRED> |
| auto * | ghassanpl::random::element_if (T &cont, PRED &&pred, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns an pointer to a random element in cont that matches pred.
|
| template<typename... T> |
| auto | ghassanpl::random::one_of (T &&... values) |
| | Returns one of its arguments at random.
|
| template<typename RANDOM = std::default_random_engine, typename T> |
| auto | ghassanpl::random::one_of (std::initializer_list< T > values, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns one of the values in values at random.
|
| template<typename RANDOM = std::default_random_engine, typename T> |
| auto | ghassanpl::random::make_bag_randomizer (T &container, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns an object that represents a random "bag" of iterators to objects in container.
|
| template<typename T, typename RANDOM> |
| size_t | ghassanpl::random::option_with_probability (span< T const > option_probabilities, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns an index of one of the options in option_probabilities, where its elements are the probability weights of their specific options.
|
| template<typename RANGE, typename FUNC, typename RANDOM> |
| auto | ghassanpl::random::iterator_with_probability (RANGE &&range, FUNC &&prob_func, RANDOM &rng=::ghassanpl::random::default_random_engine) |
| | Returns an iterator to a random object in range, with the probability weights of an object being chosen given by prob_func(obj).
|
Random number generation, and other random value generation functions.
Most of the random functions take, as their last argument, a random engine to use, but they are all defaulted to use the thread local default_random_engine variable.