Numerics

随机数和概率分布

重要概念

1,引擎,能够产生随机的根据最大最小值均匀分布的无符号值的函数对象,随机数生成器

default_random_engine dre1;//默认的初始化的引擎产生的数是定义好了的,不是随机的

default_random_engine dre2(seed);//随机的

2,分布,引擎产生的随机值按某种分布产生最后的随机数;线性、正态、指数、伽马、伯努利等分布

uniform_int_distribution d(10,20);//产生整数基于范围为[10,20]的均匀分布,不指定范围则为[0,numeric_limits::max()]

uniform_real_distribution dd;//产生浮点数,默认范围为[0.0,1.0)

dd(dre);//产生随机数

shuffle (v.begin(), v.end(), dre);//将容器某范围的值随机交换

引擎是状态相关的,即如果引擎状态相同则产生的随机数是相同的,为此可以设置特定的不可预测的操作来获取不同的状态,从而产生不可预测的随机数;可预测的随机数可以用来做测试集。

随机引擎产生的随机值不是随机数,需通过分布和随机值共同产生随机数

Numerics_第1张图片

default_random_engine引擎在不同平台下可能产生不同的随机序列值

Numerics_第2张图片
Numerics_第3张图片
Numerics_第4张图片
特定的随机引擎
Numerics_第5张图片

分布的参数传递

uniform_int_distribution<> d(0, 20); // initialize parameters ‘‘a’’ and ‘‘b’’

d.a() // yields value of parameter ‘‘a’’

d.b() // yields value of parameter ‘‘b’’

d.param().a() // yields value of parameter ‘‘a’’

d.param().b() // yields value of parameter ‘‘b’’

或者将参数作为一个整体传递

uniform_int_distribution<>::param_type pt(100, 200); // other parametrization

d(e,pt) // generates one value according to parametrization pt

d.param(pt); // let all generated values use parametrization pt

Numerics_第6张图片
Numerics_第7张图片
Numerics_第8张图片
Numerics_第9张图片

复数

Numerics_第10张图片
Numerics_第11张图片
Numerics_第12张图片
Numerics_第13张图片
Numerics_第14张图片

使用cin输入复数时

1,只输入实部可以不加()

2,输入完整的复数(real,imaginary)

使用cout输出复数时

输出(real,imaginary)

Numerics_第15张图片

数值函数

Numerics_第16张图片
Numerics_第17张图片

你可能感兴趣的:(Numerics)