August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
随机数在很多场景中都很有用,如测试、游戏、仿真和安全。为了适应各种各样的应用需求,标准库在<random>中提供了多种不同的随机数发生器供选择。一个随机数发生器包括两部分:
·一个引擎(engine),负责生成一组随机值或者伪随机值。
·一种分布(distribution),负责将引擎生成的值映射到某个数学分布上。
一些典型的分布包括uniform_int_distribution(生成的所有整数的概率相等)、normal_distribution(正态分布,又名“铃铛曲线”)和exponential_distribution(指数增长),它们的应用范围各不相同。例如:
标准库随机数组件的设计思路是,不在泛化能力和性能上妥协,归功于此,即使是领域专家也都认为它是“所有随机数库的榜样和标杆”。但另一方面,它对新手不够友好。使用using语句和lambda能令相关程序更清晰一些,这在一定程度上能缓解这个问题。
对于(任何背景的)初学者来说,随机数库的完全通用的接口可能会成为一个严重障碍。作为开始,简单的均匀分布随机数发生器通常就足够了。例如:
那么,我们该如何得到这样一个随机数发生器呢?我们必须构造一个类似die()的东西,在Rand_int类中将一个引擎和一个分布组合起来: ...
Read now
Unlock full access