随机数生成与流操作知识详解
1. 随机数引擎和生成器
STL 中有三种随机数引擎的类模板,它们各自实现了一种生成随机数序列的知名且有效的算法,但优缺点不同。这三种模板是 STL 提供的所有十种标准随机数生成器类类型的基础。除了实现定义的 default_random_engine 生成器类型外,还有九种其他生成器类类型,它们对引擎进行定制,以实现已知的可靠随机序列生成算法。此外,还有三种随机数引擎适配器模板,可对引擎实例生成的序列进行定制。以下是引擎适配器模板:
- independent_bits_engine 适配器模板:修改引擎生成的值,使其具有指定的位数。
- discard_block_engine 适配器模板:修改引擎生成的值,从给定长度的序列中丢弃一些值。
- shuffle_order_engine 适配器模板:以不同的顺序返回引擎生成的值。它通过存储引擎生成的给定长度的序列,然后以随机顺序返回这些值来实现。
生成器类要么直接使用一组特定的模板参数值来定制引擎模板,要么使用随机数引擎适配器来定制另一个生成器。生成器由引擎产生的方式如图 8 - 12 所示(此处未展示图)。
建议使用对引擎进行定制的随机数生成器类类型,而不是自行定制引擎模板。下面详细介绍这些引擎及其定义的生成器类型。
2. 线性同余引擎
linear_congruential_engine 类模板实现了一种最古老且最简单的整数随机序列生成算法,即线性同余法。该算法涉及三个参数:乘
超级会员免费看
订阅专栏 解锁全文
692

被折叠的 条评论
为什么被折叠?



