太原Java培训
达内太原java培训中心

0351-5608878

热门课程

太原java培训班:C++ 11 新特性之随机数库

  • 时间:2016-09-14
  • 发布:太原Java培训
  • 来源:伯乐在线

这是C++11新特性介绍的第十部分,涉及到随机数库相关的新特性。

不想看toy code的读者可以直接拉到文章最后看这部分的总结。

简介

之前,C++中的随机数生成都依赖于一个简单的rand函数。这个函数产生一定范围内的一个均匀随机整数。如果需要其他随机分布或者其他范围的随机数,就需要根据rand函数产生的随机数进行再加工,不过这时,就容易引入非随机性了。

C++11新标准中引入了一个新的随机数库,相关功能定义在random头文件中,通过多个互相协作的类,可以生成任意范围内、服从多种随机分布的随机数。

随机引擎

新的随机数库中引入了随机引擎的概念。一个随机引擎将产生一组原始的随机数列,一般这些原始的随机数不能直接使用,要配合随机分布类产生符合某分布的随机数后才能进行使用。

一般,最常用的随机引擎是default_random_engine。

太原java培训班

随机分布

可以用uniform_int_distribution和随机引擎配合来产生均匀分布的随机整数。

太原java培训班

类似的,uniform_real_distribution则可以产生一个均匀分布的实数。

太原java培训班

换一个分布,试试正态分布:

太原java培训班

伯努利分布也是经常会使用到的:

太原java培训班

输出

整个测试程序的输出结果如下:

太原java培训班

总结

C++11新标准中引入了比rand更强大的随机数库。

随机数引擎和随机分布类配合,共同产生符合某一分布、在某一范围内的随机数。

上一篇:创业者总是心比天高 如何通过10个问题判断投资机构是否靠谱?
下一篇:太原java培训班:Java GC 的那些事(1)

Apache Lucene 6.4.2 发布,Java 搜索引擎

太原Java培训教你提高自己的编程速度

太原java培训编程如人生

Java编程基本概念

选择城市和中心
贵州省

广西省

海南省