(五)boost库之随机数random

boost库为我们提供了许多的日常随机数生成器:

1.uniform_smallint:在小整数域内的均匀分布 
2.uniform_int:在整数域上的均匀分布 
3.uniform_01:在区间[0,1]上的实数连续均匀分布 
4.uniform_real:在区间[min,max]上的实数连续均匀分布 
5.bernoulli_distribution:伯努利分布 
6.binomial_distribution:二项分布 
7.cauchy_distribution:柯西(洛伦兹)分布 
8.gamma_distribution:伽马分布 
9.poisson_distribution:泊松分布 
10.geometric_distribution:几何分布 
11.triangle_distribution:三角分布 
12.exponential_distribution:指数分布 
13.normal_distribution:正态分布 
14.lognormal_distribution:对数正态分布 
15.uniform_on_sphere:球面均匀分布

随机数生成包括两部分,一是随机数种子,二是生成器,对于随机数种子,使用boost::random::mt19937就够用了

#include <iostream>
#include <boost/random.hpp>
#include <boost/random/random_device.hpp>
boost::random::mt19937 gen;

int _tmain(int argc, _TCHAR* argv[])
{

    {
        //整数
        boost::uniform_int<> real(1, 999);
        std::cout << real(gen) << std::endl;
    }

    {
        //实数
        boost::uniform_real<double> real(1, 5);
        std::cout << real(gen) << std::endl;
    }

    {
        //0-1上的实数
        boost::uniform_01<boost::mt19937&> u01(gen);
        //正态分布,参数分别为均值、方差
        boost::normal_distribution<> nd(0, 1);
        std::cout << nd(u01) << std::endl;
    }

    boost::random::uniform_int_distribution<> dist(1, 1000);
    std::cout << dist(gen) << std::endl;
    std::cout << dist(gen) << std::endl;

    std::string chars(
        "abcdefghijklmnopqrstuvwxyz"
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        "1234567890"
        "!@#$%^&*()"
        "`~-_=+[{]{\\|;:'\",<.>/? ");
    boost::random::random_device rng;
    boost::random::uniform_int_distribution<> index_dist(0, chars.size() - 1);
    for(int i = 0; i < 8; ++i) {
        std::cout << chars[index_dist(rng)];
    }
    return 0;
}

最新文章

  1. [python拾遗]文件操作
  2. 解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题
  3. 20145211 《Java程序设计》实验报告四: Android开发基础
  4. Selenium2学习-023-WebUI自动化实战实例-021-获取浏览器显示区域大小,通过 WebDriver 截图功能
  5. 四种DLL:NON-MFC DLL, Regular DLL Statically/Dynamically Linked to MFC, MFC Extension DLL
  6. Hbase之取出行数据指定部分(类似MySQL的Limit)
  7. 这个setDefaultCloseOperation写不写的区别是什么?
  8. 一步一步写一个简单通用的makefile(三)
  9. cocos2dx实现android的对讯飞语音的合成(语言朗读的实现)
  10. CentOS卸载openoffice
  11. [CLR via C#]6. 类型和成员基础
  12. SQL SERVER 运维日记-数据库备份
  13. [codeforces167B]Wizards and Huge Prize
  14. HTTPS协议加密原理解析
  15. java之JDBC学习总结
  16. DIV+CSS:如何编写代码才能更有效率
  17. C# winform实现右下角弹出窗口结果的方法
  18. Java-GC垃圾收集器
  19. jira 安装
  20. Android AsyncTask异步加载WebAPI

热门文章

  1. Planner – 项目管理软件
  2. 十大面试问题解惑,秒杀一切HR、技术面试
  3. Unique Binary Search Trees II 解答
  4. hdu - 4651 - Partition
  5. debian msyql 5.1 卸载与安装
  6. [Spring boot] web应用返回jsp页面
  7. jquery实现仿商品星级评价
  8. toj2867 Picking Problem
  9. pt-online-schema-change解读
  10. javascript XMLHttpRequest对象全面剖析