C++ 随机数生成器和随机数引擎及其两者间关系解析

  • 内容
  • 评论
  • 相关

ST L中有 3 个随机数引擎的类模板。它们中的每一个都实现了用来生成随机数序列的著名且高效的算法,但它们都有不同的优缺点。

这里的 3 个模板是 STL 提供的所有 10 个标准的随机数生成器类类型的基础。除了默认的 default_random_engine 生成器类型(这是实现的定义)之外,还有 9 个更进一步的生成器类类型,可以自定义引擎来实现生成随机序列的已知的可靠算法。

有 3 个随机数引擎适配器可以自定义从一个引擎得到的序列。它们中的每一个都有一个指定运用哪个引擎的模板参数。这 3 个引擎适配器模板是:

  • independent_bits_engine 适配器模板会将引擎生成的值修改为指定的比特个数。
  • discard_block_engine 适配器模板会将引擎生成的值修改为丢弃给定长度的值序列中的一些元素。
  • shuffle_order_engine 适配器模板会将引擎生成的值返回到不同的序列中。通过保存从引擎得到的给定长度的值序列来做到这些,然后在随机序列中返回它们。

生成器类既可以直接用一套指定的模板参数值自定义一个引擎模板,也可以用一个随机数引擎适配器来自定义另一个生成器。引擎产生生成器的方式如图 1 所示。



图 1 随机数生成器和随机数引擎的关系(点此查看高清大图)

本文标题:C++ 随机数生成器和随机数引擎及其两者间关系解析

本文地址:http://www.hosteonscn.com/3047.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注