Numerics

2017-02-09  本文已影响0人  龙遁流

随机数和概率分布<random>

重要概念

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

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

default_random_engine dre2(seed);//随机的

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

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

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

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

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

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

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

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

特定的随机引擎

分布的参数传递

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

复数

<complex>

使用cin输入复数时

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

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

使用cout输出复数时

输出(real,imaginary)

数值函数

上一篇下一篇

猜你喜欢

热点阅读