C++ random 头

  • 定义

    random 引入随机数生成功能。该库允许使用生成器和分布的组合来产生随机数:
    • 生成器:生成均匀分布的数字的对象。
    • 分布:将生成器生成的数字序列转换为遵循特定随机变量分布(例如均匀,正态或二项式)的数字序列的对象。
    分发对象通过其operator()成员生成随机数,该成员将生成器对象作为参数:
    
    std::default_random_engine generator;
    std::uniform_int_distribution<int< distribution(1,6);
    int dice_roll = distribution(generator);  // generates number in the range 1..6
    
    为了重复使用,可以将两者绑定在一起:
    
    auto dice = std::bind ( distribution, generator );
    int wisdom = dice()+dice()+dice();
    
    除了random_device之外,库中定义的所有标准生成器都是随机数引擎,它们是一种使用特定算法生成一系列伪随机数的生成器。 这些算法需要种子作为随机性的来源,并且该种子可以是单个值,也可以是具有非常特定的generate()成员函数/类/模板的对象(有关更多信息,请参见seed_seq)。 琐碎任务的典型随机性来源是时间,例如time或system_clock::now提供的信息(有关典型示例,请参见Uniform_int_distribution::operator())。另外,也可以使用cstdlib的rand和srand函数/类/模板生成不重要的随机数。
  • Generators(生成者)

    伪随机数引擎(模板)
    生成器使用一种算法来基于初始种子生成伪随机数:
    函数/类/模板 描述
    linear_congruential_engine 线性同余随机数引擎(类模板)
    mersenne_twister_engine Mersenne Twister随机数引擎(类模板)
    subtract_with_carry_engine 随身携带随机数引擎(类模板)
    引擎适配器
    他们调整引擎,修改引擎生成数字的方式:
    函数/类/模板 描述
    discard_block_engine 丢弃块随机数引擎适配器(类模板)
    independent_bits_engine 独立位随机数引擎适配器(类模板)
    shuffle_order_engine 随机顺序随机数引擎适配器(类模板)
    伪随机数引擎(实例)
    生成器引擎和适配器的特殊实例化:
    函数/类/模板 描述
    default_random_engine 默认随机引擎(类)
    minstd_rand 最低标准minstd_rand生成器(类)
    minstd_rand0 最低标准minstd_rand0生成器(类)
    mt19937 Mersenne Twister 19937生成器(类)
    mt19937_64 Mersene Twister 19937生成器(64位)(类)
    ranlux24_base Ranlux 24基础生成器(类)
    ranlux48_base Ranlux 48基础生成器(类)
    ranlux24 Ranlux 24生成器(类)
    ranlux48 Ranlux 48生成器(类)
    knuth_b Knuth-B生成器(类)
    随机数生成器
    非确定性随机数生成器:
    函数/类/模板 描述
    random_device 真随机数生成器(类)
  • 分布

    Uniform
    函数/类/模板 描述
    uniform_int_distribution 均匀离散分布(类模板)
    uniform_real_distribution 均匀实数分布(类模板)
    与伯努利试验(是/否)有关:
    函数/类/模板 描述
    bernoulli_distribution 伯努利分布(类)
    binomial_distribution 二项式分布(类模板)
    geometric_distribution 几何分布(类模板)
    negative_binomial_distribution 负二项分布(类模板)
    基于率的分布:
    函数/类/模板 描述
    poisson_distribution 泊松分布(类模板)
    exponential_distribution 指数分布(类模板)
    gamma_distribution 伽玛分布(类模板)
    weibull_distribution 威布尔分布(类模板)
    extreme_value_distribution 极值分配(类模板)
    与正态分布有关:
    函数/类/模板 描述
    normal_distribution 正态分布(类模板)
    lognormal_distribution 对数正态分布(类模板)
    chi_squared_distribution 卡方分布(类模板)
    cauchy_distribution 柯西分布(类模板)
    fisher_f_distribution Fisher F分布(类模板)
    student_t_distribution 学生T分布(类模板)
    分段分布:
    函数/类/模板 描述
    discrete_distribution 离散分布(类模板)
    piecewise_constant_distribution 分段常数分布(类模板)
    piecewise_linear_distribution 分段线性分布(类模板)
  • 其他

    函数/类/模板 描述
    seed_seq 种子序列(类)
    generate_canonical 生成规范数字(函数模板)