zoukankan      html  css  js  c++  java
  • C/C++基础----随机数分布和随机数引擎

    随机数分布

    除了伯努利分布,其他都是模板,接收单个类型参数,指出分布生成的结果类型。
    表示分布生成浮点数,float、double或long double
    表示要求一个整型类型,不包括bool或任何char类型
    整型分布默认int,浮点默认double
    范围都是包含的

    均匀分布
    uniform_int_distribution<IntT> u(m, n);
    uniform_real_distribution<RealT> u(m, n);
    m默认0,n默认IntT对象可以表示的最大值;m默认0.0,n默认1.0
    伯努利分布
    Bernoulli_distribution b(p);//以概率p生成true,默认0.5
    Bernoulli_distribution<IntT> b(t, p);//分布的采样大小为整型值t。t默认1,p默认0.5
    geometric_distribution<IntT> g(p);//每次试验成功概率为p,默认0.5
    negative_binomial_distribution<IntT> nb(k, p);//k次试验成功概率为p。k默认1,p默认0.5
    泊松分布
    poisson_distribution<IntT> p(x);//均值为double值x
    exponential_distribution<RealT> e<lam);//指数分布,lambda浮点值,默认1.0
    gamma_distribution<RealT> g(a, b);//形状参数为a,尺度参数为b,默认均为1.0
    weibull_distribution<RealT> w(a, b);// 形状参数为a,尺度参数为b,默认均为1.0
    extrme_value_distribution<RealT> e(a, b);//a的默认值为0.0,b默认1.0
    正态分布
    normal_distribution<RealT> n(m, s);//均值m,标准差s;默认0.0,1.0
    lognormal_distribution<RealT> ln(m, s);//
    chi_squared_distribution<RealT> c(x);//自由度x,默认1.0
    cauchy_distribution<RealT> c(a, b);//位置参数a和尺度参数b默认分别0.0,1.0
    fisher_f_distribution<RealT> f(m, n);//自由度为m和n,默认值均为1
    student_t_distribution<RealT> s(n);//自由度为n,默认值1
    抽样分布
    discrete_distribution<IntT> d(i, j);
    discrete_distribution<IntT> d(il);
    i和j是权重序列的输入迭代器,il是权重的花括号列表。权重必须能转换为double
    piecewise_constant_distribution<RealT> pc(b, e,w);//b e w输入迭代器
    piecewise_linear_distribution<RealT> pc(b, e,w);//b e w输入迭代器
    

    随机数引擎

    标准库定义了3个引擎类和3个引擎适配器类,都是模板
    default_random_engine
    来自其他引擎类型的类型别名,目的是用于大多数情况
    linear_congruential_engine
    minstd_rand0的乘数为16807,模为2147483647,增量为0
    minstd_rand0的乘数为48271,模为2147483647,增量为0
    mersenne_twister_engine
    mt19937为32位无符号梅森旋转生成器
    mt19937_64为64位无符号梅森旋转生成器
    subtract_with_carry_engine
    ranlux24_base为32位无符号借位减法生成器
    ranlux48_base为64位无符号借位减法生成器
    discard_block_engine
    引擎适配器,将其底层引擎的结果丢弃。用要使用的底层引擎、块大小和旧块大小来参数化
    ranlux24使用ranlux24_base引擎,块大小223,旧块23
    ranlux48使用ranlux48_base引擎,块大小389,旧块11
    independent_bits_engine
    引擎适配器,生成指定位数的随机数。用要使用的底层引擎、结果的位数以及保存生成的二进制位的无符号整型类型来参数化。指定位数必须小于指定的无符号类型所能保存的位数。
    shuffle_order_engine
    引擎适配器,返回的就是底层引擎生成的数,但返回的顺序不同。用要使用的底层引擎和要混洗的元素数目来参数化。
    knuth_b使用minstd_rand0和表达小256
    
  • 相关阅读:
    【JQuery】JQuery属性
    C语言封装的环形队列
    C语言封装的栈结构
    再谈C语言宏定义
    url编码与解码(C语言)
    鼠标钩子安装,实现获取鼠标的全局点击位置
    分享一个MFC的内存DC封装类
    MDK5.30中出现警告 xxx.c(x): warning: no previous extern declaration for non-static variable 'in' [-Wmissing-variable-declarations]
    MFC中加载位图
    分享一个自己封装的WIN SOCKET类
  • 原文地址:https://www.cnblogs.com/logchen/p/10188359.html
Copyright © 2011-2022 走看看