栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

生成随机数random学习之uniform

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生成随机数random学习之uniform

在程序开发过程中,有时我们需要用到随机数,如果自己手写一个随机数容易引用重复,而c++11已经提供了一个生成随机数的库random,并且就可设置随机数的范围和类型,下面我们来学习使用两个最常用的随机数生成函数。

均匀分布

uniform_int_distribution

(C++11)

产生在一个范围上均匀分布的整数值
(类模板)

uniform_real_distribution

(C++11)

产生在一个范围上均匀分布的实数值
(类模板)
#include 
#include 

using namespace std;

int main()
{
    default_random_engine int_engine; //定义随机数引擎
    //定义整型随机数的取值范围
    uniform_int_distribution udistribution(100000, 999999);
    unsigned int uRandom = udistribution(int_engine);
    cout << "uRandom======================  " << uRandom << endl;
    uniform_int_distribution distribution(-999999, -100000);
    int random = distribution(int_engine);
    cout << "random=======================  " << random << endl;

    //定义浮点型随机数的取值范围
    default_random_engine real_engine; //定义随机数引擎
    uniform_real_distribution doubleDistribution(10000.1, 99999.9);
    double realRandom = doubleDistribution(real_engine);
    cout << "realRandom===================   " << realRandom << endl;


    random_device rd;  // 将用于获得随机数引擎的种子
    mt19937 gen(rd()); // 以 rd() 播种的标准 mersenne_twister_engine
    uniform_real_distribution<> dis(10000, 99999);
    for (int n = 0; n < 10; ++n) {
        // 用 dis 变换 gen 生成的随机 unsigned int 为 [1, 2) 中的 double
        std::cout << dis(gen) << ' '; // 每次调用 dis(gen) 都生成新的随机 double
    }
    cout <<  endl;
    cout << "Hello World!" << endl;
    return 0;
}

运行结果:

 

参考:

- cppreference.com">标准库头文件 - cppreference.com

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号