<random>

定义了多个随机数生成器。

#include <random>

备注

A 随机数生成器是一个产生的伪随机值序列的对象。生成器产生均匀分布在指定区域中的值是引擎。引擎可以结合分发,或者通过将引擎作为参数传递到通讯组的operator()或使用variate_generator Class,以生成由分布的方式分布的值。

随机数生成器的大多数是其参数的自定义生成器的模板。生成器类型作为参数的说明来描述类型的属性,如下所示为实际参数类型,允许使用常用的模板参数名:

  • IntType表示有符号或无符号的整数类型。

  • UIntType表示无符号整数类型。

  • RealType指示浮点型。

引擎是 TR1 类或模板类的实例作为均匀分布的最小和最大值之间的随机数的源。引擎可以是简单引擎 或 复合引擎。每个引擎具有以下成员:

  • typedef numeric-type result_type是由生成器的返回类型operator()。

  • result_type min()返回由生成器返回的最小值operator()。

  • result_type max()返回由生成器返回的最大值operator()。当result_type是一种整型类型,这是实际返回 ; 最大值 当result_type是一种浮点类型,这是所有可返回的值大于最小值。

  • void seed()种子函数初始化引擎的默认种子值。

  • template <class InIt> void seed(InIt& first, InIt last)种子功能通过使用类型的值开始生效,引擎unsigned long所指向的半打开序列[first, last)。如果序列不足够长以完全初始化引擎,该函数将值存储last在first并引发一个对象类型的std::invalid_argument。

    说明说明

    仅保留 TR1 兼容性引擎包括该成员。

  • result_type operator()()返回值之间统一分发的min()和max()。

minmax,和result_type不遵循的引擎的详细描述。

从开始 Visual Studio 2010年,除了那些 TR1 兼容性保留每个引擎还包括以下成员:

  • 使用参数显式构造函数result_type x0语句创建种子像通过调用 seed(x0) 的引擎。

  • 使用参数显式构造函数seed_seq& seq语句创建引擎种子像通过调用seed(seq)。

  • void seed(result_type x0)种子值,引擎开始生效的种子函数x0。

  • void seed(seed_seq& seq)种子函数开始生效的引擎中的种子值seq。

  • void discard(unsigned long long count)有效地调用operator()计数时间而丢弃的每个值。

每个引擎有状态的后续调用生成的值的顺序决定的operator()。可以对同一类型的两个对象的状态进行比较,使用operator==和operator!=。如果两个状态的比较结果是相等,对象将生成相同的值序列。对象的状态可以保存到流为一系列 32 位无符号值通过使用operator<<的对象。不保存更改状态。已保存的状态可以读取到同一类型的对象使用operator>>。

A 简单引擎是一种直接生成随机数字的引擎。此库提供了一个类的对象都是简单的引擎。它还提供了四种可使用的算法,它们可实现提供参数的值进行实例化的类模板和 9 个预定义的那些类模板实例。这些类型的对象也是简单的引擎。

A 复合引擎是一种从一种获取随机数的引擎或多个简单引擎和使用这些值生成的流,统一分配的随机数。此库提供了两个复合引擎的类模板。

A 分发是 TR1 类或模板类的实例转换统一分配的随机数引擎从获取为具有特定的分布的随机数的流的流。每个通讯组包含下列成员:

  • typedef numeric-type input_type是应返回传递给引擎的类型operator()。

  • typedef numeric-type result_type是返回的分布类型operator()。

  • void reset()将丢弃任何缓存的值,以便下次调用的结果operator()不依赖于从调用之前,引擎获得的任何值。

  • template <class Engine> result_type operator()(Engine& eng)返回值使用分发到分发的定义中,根据eng作为源统一分配随机值和存储的参数包。

input_typeresult_type,和reset不为按照分发的详细描述。

从开始 Visual Studio 2010年,还具有每个通讯组:

  • typedef unspecified-type param_type软件包的参数传递到生成它的返回值 operator()。

  • A const param&构造函数初始化该方法的参数从存储的参数包。

  • param_type param() const获取存储的参数包。

  • void param(const param_type&)从该方法的参数设置存储的参数包。

  • template <class Engine> result_type operator()(Engine& eng, param_type par0)返回值分布式依照通讯组的定义中,为统一分配随机值和参数文件包的源使用 eng par0。

参数包是存储所需的通讯组的所有参数的对象。它包含:

  • typedef distribution-type distribution_type是一种其分发。

  • 分发构造函数采用列出一个或多个带有相同的参数的构造函数。

  • 为通讯组相同的参数访问功能。

  • 相等和不等比较运算符。

作为签版本和一个未经检查的版本,则可以生成库。已检查的版本使用类似于 C 的宏assert宏来测试条件标记为Precondition功能的说明中。若要使用的选定的版本,定义任意宏_RNG_CHECK或宏_DEBUG为非零数字值中使用库的所有代码。

Bb982398.collapse_all(zh-cn,VS.110).gif

bernoulli_distribution Class

生成伯努利分布。

binomial_distribution Class

生成二项式分布。

cauchy_distribution Class

生成一个 Cauchy 的分发方案。

chi_squared_distribution Class

生成 γ 2 分布。

discard_block Class

生成的随机序列,放弃其基引擎返回的值。保留 TR1 兼容性。

discard_block_engine Class

生成的随机序列,放弃其基引擎返回的值。

discrete_distribution Class

生成整数离散分布。

exponential_distribution Class

生成指数分布。

extreme_value_distribution Class

生成的极端值分布。

fisher_f_distribution Class

生成 Fisher F 分布。

gamma_distribution Class

生成伽玛分布。

geometric_distribution Class

生成的几何分布。

independent_bits_engine Class

通过重新打包位从其基引擎返回的值将生成具有指定位数的随机序列。

linear_congruential Class

使用线性倍增算法将生成随机序列。保留 TR1 兼容性。

linear_congruential_engine Class

使用线性倍增算法将生成随机序列。

lognormal_distribution Class

生成日志正态分布。

mersenne_twister Class

通过使用 Mersenne 动脑筋屏保算法将生成随机序列。保留 TR1 兼容性。

mersenne_twister_engine Class

通过使用 Mersenne 动脑筋屏保算法将生成随机序列。

negative_binomial_distribution Class

生成负二项式分布。

normal_distribution Class

生成标准分布。

piecewise_constant_distribution Class

生成的 piecewise 常量的通讯组。

piecewise_linear_distribution Class

生成 piecewise 线性分发。

poisson_distribution Class

生成泊松分布。

random_device Class

使用外接设备生成的随机序列。

seed_seq Class

存储的无符号的整数值,可以提供一个随机数引擎以随机的种子的向量。

shuffle_order_engine Class

生成随机序列进行排序,从其基引擎返回的值。

student_t_distribution Class

生成的学生 T 分布。

subtract_with_carry Class

生成随机序列执行算法中使用减去。保留 TR1 兼容性。

subtract_with_carry_01 Class

生成的随机序列使用浮点减去携带算法。保留 TR1 兼容性。

subtract_with_carry_engine Class

生成随机序列执行算法中使用减去。

uniform_int Class

生成统一整数分发。保留 TR1 兼容性。

uniform_int_distribution Class

生成统一整数分发。

uniform_real Class

生成浮点分布均匀。保留 TR1 兼容性。

uniform_real_distribution Class

生成浮点分布均匀。

variate_generator Class

包装一个引擎和分发。

weibull_distribution Class

生成韦伯分布。

xor_combine Class

生成一个组合的分发方案。

Bb982398.collapse_all(zh-cn,VS.110).gifTypedef

default_random_engine TypeDef

键入默认引擎的定义。

knuth_b TypeDef

键入一个无序播放顺序引擎的定义。

minstd_rand0 TypeDef

键入一个线性倍增引擎的定义。

minstd_rand TypeDef

键入一个线性倍增引擎的定义。

mt19937 TypeDef

键入 Mersenne 动脑筋屏保引擎的定义。

mt19937_64 TypeDef

键入 Mersenne 动脑筋屏保引擎的定义。

ranlux_base_01 TypeDef

执行引擎中减去的浮点类型定义。

ranlux3 TypeDef

类型定义与减为执行引擎。

ranlux3_01 TypeDef

执行引擎中减去的浮点类型定义。

ranlux4 TypeDef

类型定义与减为执行引擎。

ranlux4_01 TypeDef

执行引擎中减去的浮点类型定义。

ranlux24 TypeDef

键入一个放弃块引擎的定义。

ranlux24_base TypeDef

类型定义与减为执行引擎。

ranlux48 TypeDef

键入一个放弃块引擎的定义。

ranlux48_base TypeDef

类型定义与减为执行引擎。

ranlux64_base_01 TypeDef

执行引擎中减去的浮点类型定义。

Bb982398.collapse_all(zh-cn,VS.110).gif运算符

operator== <random>

测试该运算符左侧的引擎等于右侧的引擎。

operator!= <random>

如果将运算符左侧的引擎不等于右侧引擎,测试。

operator<< <random>

写入流的状态信息。

operator>> <random>

从流中提取状态信息。

Bb982398.collapse_all(zh-cn,VS.110).gif函数

generate_canonical

返回随机序列的浮点值。