|
Console Library 4.7.0
A header-only library that makes C++ simple
|
随机数生成、随机选择、随机打乱等实用函数。 More...
Functions | |
| std::mt19937 & | console::default_gen () |
| 获取一个全局的、以当前时间戳为种子的 Mersenne Twister 随机数引擎。 | |
| void | console::seed (unsigned int seed) |
| 修改 default_gen 提供的随机数引擎的种子。 | |
| template<class T = int> | |
| T | console::randint (T min=0, T max=32767, std::mt19937 &gen=default_gen()) |
| 生成一个指定范围内的随机整数(均匀分布)。 | |
| template<class T = double> | |
| T | console::uniform (T min=0.0, T max=1.0, std::mt19937 &gen=default_gen()) |
| 生成一个指定范围内的随机浮点数(均匀分布)。 | |
| template<class C> | |
| auto | console::choice (C &c, std::mt19937 &gen=default_gen()) -> decltype(*std::begin(c)) |
| 从容器中随机选择一个元素(左值版本,返回引用)。 | |
| template<class C> | |
| auto | console::choice (C &&c, std::mt19937 &gen=default_gen()) -> std::remove_reference< decltype(*std::begin(c))>::type |
| 从容器中随机选择一个元素(右值版本,返回值)。 | |
| template<class T> | |
| auto | console::choice (std::initializer_list< T > init, std::mt19937 &gen=default_gen()) -> decltype(*std::begin(init)) |
| 从 std::initializer_list 中随机选择一个元素(重载版本)。 | |
| template<class C> | |
| void | console::shuffle (C &&c, std::mt19937 &gen=default_gen()) |
| 随机打乱容器中元素的顺序(Fisher-Yates 洗牌算法)。 | |
| template<class T = double> | |
| std::vector< T > | console::rnorm (size_t n, T mean=0.0, T sd=1.0, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从正态分布(Normal Distribution)的随机数。 | |
| template<class T = double> | |
| std::vector< T > | console::runif (size_t n, T min=0.0, T max=1.0, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从均匀分布(Uniform Distribution)的随机数。 | |
| template<class T = int> | |
| std::vector< T > | console::rbinom (size_t n, T size, double prob, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从二项分布(Binomial Distribution)的随机数。 | |
| template<class T = int> | |
| std::vector< T > | console::rpois (size_t n, double lambda, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从泊松分布(Poisson Distribution)的随机数。 | |
| template<class T = double> | |
| std::vector< T > | console::rexp (size_t n, T rate=1.0, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从指数分布(Exponential Distribution)的随机数。 | |
| template<class T = double> | |
| std::vector< T > | console::rgamma (size_t n, T shape, T rate=1.0, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从伽马分布(Gamma Distribution)的随机数。 | |
| template<class T = double> | |
| std::vector< T > | console::rbeta (size_t n, T shape1, T shape2, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从贝塔分布(Beta Distribution)的随机数。 | |
| template<class T = double> | |
| std::vector< T > | console::rchisq (size_t n, T df, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从卡方分布(Chi-squared Distribution)的随机数。 | |
| template<class T = double> | |
| std::vector< T > | console::rt (size_t n, T df, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从 t 分布(Student's t-distribution)的随机数。 | |
| template<class T = double> | |
| std::vector< T > | console::rf (size_t n, T df1, T df2, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从 F 分布(Fisher–Snedecor F-distribution)的随机数。 | |
| template<class T = double> | |
| std::vector< T > | console::rlnorm (size_t n, T meanlog=0.0, T sdlog=1.0, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从对数正态分布(Lognormal Distribution)的随机数。 | |
| template<class T = double> | |
| std::vector< T > | console::rweibull (size_t n, T shape, T scale=1.0, std::mt19937 &gen=default_gen()) |
| 生成 n 个服从韦布尔分布(Weibull Distribution)的随机数。 | |
| template<class C> | |
| auto | console::sample (C &&c, size_t size, bool replace=false, std::mt19937 &gen=default_gen()) -> std::vector< typename std::iterator_traits< decltype(std::begin(c))>::value_type > |
| 从容器中随机抽取指定数量的元素(有放回或无放回)。 | |
| template<class T> | |
| std::vector< T > | console::sample (std::initializer_list< T > init, size_t size, bool replace=false, std::mt19937 &gen=default_gen()) |
| 从 std::initializer_list 中随机抽样(重载版本)。 | |
随机数生成、随机选择、随机打乱等实用函数。
| auto console::choice | ( | C && | c, |
| std::mt19937 & | gen = default_gen() ) -> std::remove_reference< decltype(*std::begin(c))>::type |
从容器中随机选择一个元素(右值版本,返回值)。
| C | 容器类型,必须支持 std::begin 和 std::end 迭代器以及 size() 方法。 |
| c | 要从中选择的容器(右值)。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| container_error | 如果容器为空。 |
| auto console::choice | ( | C & | c, |
| std::mt19937 & | gen = default_gen() ) -> decltype(*std::begin(c)) |
从容器中随机选择一个元素(左值版本,返回引用)。
| C | 容器类型,必须支持 std::begin 和 std::end 迭代器以及 size() 方法。 |
| c | 要从中选择的容器(左值)。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| container_error | 如果容器为空。 |
| auto console::choice | ( | std::initializer_list< T > | init, |
| std::mt19937 & | gen = default_gen() ) -> decltype(*std::begin(init)) |
从 std::initializer_list 中随机选择一个元素(重载版本)。
| T | 元素类型。 |
| init | 初始化列表。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| container_error | 如果初始化列表为空。 |
|
inline |
获取一个全局的、以当前时间戳为种子的 Mersenne Twister 随机数引擎。
该函数返回一个静态的 std::mt19937 对象的引用,引擎使用高精度时钟的当前时间点进行初始化。
| T console::randint | ( | T | min = 0, |
| T | max = 32767, | ||
| std::mt19937 & | gen = default_gen() ) |
生成一个指定范围内的随机整数(均匀分布)。
| T | 整数类型,默认为 int。 |
| min | 最小值(包含),默认为 0。 |
| max | 最大值(包含),默认为 32767。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rbeta | ( | size_t | n, |
| T | shape1, | ||
| T | shape2, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从贝塔分布(Beta Distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| shape1 | α 形状参数,shape1 > 0。 |
| shape2 | β 形状参数,shape2 > 0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rbinom | ( | size_t | n, |
| T | size, | ||
| double | prob, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从二项分布(Binomial Distribution)的随机数。
| T | 整数类型,默认为 int。 |
| n | 生成的随机数个数。 |
| size | 每次试验的次数(trials)。 |
| prob | 每次试验的成功概率(probability),取值范围 [0, 1]。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rchisq | ( | size_t | n, |
| T | df, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从卡方分布(Chi-squared Distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| df | 自由度(degrees of freedom),df > 0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rexp | ( | size_t | n, |
| T | rate = 1.0, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从指数分布(Exponential Distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| rate | 比率参数 λ(即 1/尺度),rate > 0。默认为 1.0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rf | ( | size_t | n, |
| T | df1, | ||
| T | df2, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从 F 分布(Fisher–Snedecor F-distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| df1 | 分子自由度,df1 > 0。 |
| df2 | 分母自由度,df2 > 0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rgamma | ( | size_t | n, |
| T | shape, | ||
| T | rate = 1.0, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从伽马分布(Gamma Distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| shape | 形状参数 k(α),shape > 0。 |
| rate | 比率参数 β(即 1/尺度),rate > 0。默认为 1.0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rlnorm | ( | size_t | n, |
| T | meanlog = 0.0, | ||
| T | sdlog = 1.0, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从对数正态分布(Lognormal Distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| meanlog | 取对数后的均值,默认为 0.0。 |
| sdlog | 取对数后的标准差,sdlog > 0,默认为 1.0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rnorm | ( | size_t | n, |
| T | mean = 0.0, | ||
| T | sd = 1.0, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从正态分布(Normal Distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| mean | 分布的均值 μ,默认为 0.0。 |
| sd | 分布的标准差 σ,默认为 1.0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rpois | ( | size_t | n, |
| double | lambda, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从泊松分布(Poisson Distribution)的随机数。
| T | 整数类型,默认为 int。 |
| n | 生成的随机数个数。 |
| lambda | 分布的均值 λ(同时也是方差),λ > 0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rt | ( | size_t | n, |
| T | df, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从 t 分布(Student's t-distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| df | 自由度(degrees of freedom),df > 0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::runif | ( | size_t | n, |
| T | min = 0.0, | ||
| T | max = 1.0, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从均匀分布(Uniform Distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| min | 下界(包含),默认为 0.0。 |
| max | 上界(包含),默认为 1.0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| std::vector< T > console::rweibull | ( | size_t | n, |
| T | shape, | ||
| T | scale = 1.0, | ||
| std::mt19937 & | gen = default_gen() ) |
生成 n 个服从韦布尔分布(Weibull Distribution)的随机数。
| T | 浮点数类型,默认为 double。 |
| n | 生成的随机数个数。 |
| shape | 形状参数 k,shape > 0。 |
| scale | 尺度参数 λ,scale > 0。默认为 1.0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| auto console::sample | ( | C && | c, |
| size_t | size, | ||
| bool | replace = false, | ||
| std::mt19937 & | gen = default_gen() ) -> std::vector< typename std::iterator_traits< decltype(std::begin(c))>::value_type > |
从容器中随机抽取指定数量的元素(有放回或无放回)。
| C | 容器类型,必须支持 std::begin 和 std::end 迭代器。 |
| c | 要抽样的容器。 |
| size | 抽取的元素数量。 |
| replace | 是否允许重复抽取(有放回),默认为 false。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| container_error | 如果容器为空,或 size 超过容器大小且 replace==false。 |
| std::vector< T > console::sample | ( | std::initializer_list< T > | init, |
| size_t | size, | ||
| bool | replace = false, | ||
| std::mt19937 & | gen = default_gen() ) |
从 std::initializer_list 中随机抽样(重载版本)。
| T | 元素类型。 |
| init | 初始化列表。 |
| size | 抽取的元素数量。 |
| replace | 是否允许重复抽取(有放回),默认为 false。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
|
inline |
修改 default_gen 提供的随机数引擎的种子。
| 新的种子。 |
| void console::shuffle | ( | C && | c, |
| std::mt19937 & | gen = default_gen() ) |
随机打乱容器中元素的顺序(Fisher-Yates 洗牌算法)。
| C | 容器类型,必须支持 std::begin 和 std::end 迭代器、size() 以及 swap 操作。 |
| c | 要打乱的容器(支持左值或右值引用)。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |
| T console::uniform | ( | T | min = 0.0, |
| T | max = 1.0, | ||
| std::mt19937 & | gen = default_gen() ) |
生成一个指定范围内的随机浮点数(均匀分布)。
| T | 浮点数类型,默认为 double。 |
| min | 最小值(包含),默认为 0.0。 |
| max | 最大值(包含),默认为 1.0。 |
| gen | 使用的随机数引擎,默认为 default_gen()。 |