首页
社区
课程
招聘
[分享]《探索现代化C++》泛读笔记摘要16
发表于: 2022-9-25 09:15 5670

[分享]《探索现代化C++》泛读笔记摘要16

2022-9-25 09:15
5670

《探索现代化C++》泛读笔记摘要16

Chapter 4 C++库

数值库

随机数生成器

随机数在模拟计算,游戏编程以及密码学都有应用。

 

C++11 以前一般都是使用randsrand这两个函数。

 

C++11 推出<random>库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <random>
#include <iostream>
 
std::default_random_engine& global_urng(){
    static std::default_random_engine u{};
    return u;
}
 
void randomize(){
    static std::random_device rd{};
    global_urng().seed(rd());
}
 
int pick(int from, int thru) {
    static std::uniform_int_distribution<> d{};
    using parm_t = decltype(d)::param_type;
    return d(global_urng(), parm_t(from, thru));
}
 
double pick(double from, double upto) {
    static std::uniform_real_distribution<> d{};
    using parm_t = decltype(d)::param_type;
    return d(global_urng(), parm_t(from, upto));
}
 
using namespace std;
 
int main(int argc, char* argv[]) {
    randomize();
    cout << "Now, we roll dice:\n";
    for (int i = 0; i < 15; ++i)
        cout << pick(1, 6) << endl;
 
    cout << "\nLet's roll continuous dice now: ;-)\n";
    for (int i = 0; i < 15; ++i)
        cout << pick(1.0, 6.0) << endl;
    return 0;
}

引擎

 

<random>主要包含两种函数对象,一个是生成器,一个是分布器。

特殊数学函数

C++17

 

在数学中,以法国数学家埃德蒙·拉盖尔(英语:Edmond Laguerre)命名的拉盖尔多项式定义为拉盖尔方程的标准解。拉盖尔多项式,是一列常见的定义于非负实数集上的正交多项式,是伴随于Gamma分布密度函数的正交多项式,在量子力学,统计学等方面有重要应用。

 

assoc_laguerre(n,m,x) 连带拉盖尔多项式

 

assoc_legendre(1,m,x) 连带勒让德方程来源于在球坐标系中使用分离变量法解拉普拉斯方程(球坐标系中的拉普拉斯方程)中

 

beta(x,y) 在概率统计和其他应用学科中会经常用到贝塔函数,有的反常积分的计算最后也会归结为贝塔函数。

 

在积分学中,椭圆积分最初出现于椭圆的弧长有关的问题中。

 

comp_ellint_1(k) 第一类完全椭圆积分

 

comp_ellint_2(k) 第二类完全椭圆积分

 

comp_ellint_3(k) 第三类完全椭圆积分

 

贝塞尔函数是贝塞尔方程的解,它们和其他函数组合成柱调和函数。除初等函数外,在物理和工程中贝塞尔函数是最常用的函数,它们以19世纪德国天文学家F.W.贝塞尔的姓氏命名,他在1824年第一次描述过它们。

 

cyl_bessel_i(nu,x) 常规修正柱贝塞尔函数

 

cyl_bessel_j(nu,x) 第一类柱贝塞尔函数

 

cyl_bessel_k(nu,x) 非常规修正柱贝塞尔函数

 

cyl_neumann(nu,x) 柱诺依曼函数

 

ellint_1(k,phi) 第一类不完全椭圆积分

 

ellint_2(k,phi) 第二类不完全椭圆积分

 

ellint_3(k,phi) 第三类不完全椭圆积分

 

expint(x) 在数学中,指数积分是函数的一种,它不能表示为初等函数,是特殊的不完全伽马函数之一。

 

hermite(n,x) 埃尔米特多项式得名于法国数学家夏尔·埃尔米特。在数学中,是一种经典的正交多项式族;概率论里的埃奇沃斯级数的表达式中就要用到埃尔米特多项式;在组合数学中,埃尔米特多项式是阿佩尔方程的解;物理学中,埃尔米特多项式给出了量子谐振子的本征态。

 

laguerre(n,x) 拉盖尔多项式

 

legendre(1,x) 勒让德多项式

 

riemann_zeta(x) 黎曼ζ函数主要和“最纯”的数学领域数论相关,它也出现在应用统计学和齐夫-曼德尔布罗特定律(Zipf-Mandelbrot Law))、物理,以及调音的数学理论中。

 

sph_bessel(n,x) 第一类球贝塞尔函数

 

sph_legendre(1,m,theta) 球关联勒让德函数

 

sph_neumann(n,x) 球诺依曼函数

数学常量

C++20 <numbers>库

 

在命名空间std::numbers中

1
2
3
4
5
6
7
8
9
10
11
12
13
e
log2e
log10e
pi
inv_pi
inv_sqrtpi
ln2
ln10
sqrt2
sqrt3
inv_sqrt3
egamma 欧拉常数γ
phi 黄金比例

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 687
活跃值: (320)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好像没有搜到这本书,是自己写的吗?
2022-9-27 11:23
0
雪    币: 1907
活跃值: (6004)
能力值: ( LV7,RANK:116 )
在线值:
发帖
回帖
粉丝
3
thisisroot 好像没有搜到这本书,是自己写的吗?
Discovering Modern C++, 2nd Edition
2022-9-27 15:51
0
雪    币: 687
活跃值: (320)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
VirtualCC Discovering Modern C++, 2nd Edition
 感谢感谢
2022-9-28 14:18
0
游客
登录 | 注册 方可回帖
返回
//