当前位置: 首页 > news >正文

c++随机数引擎

/**
 * 作者: cwl
 * 描述: c++ 随机数引擎生成随机数
 * */
#include <bits/stdc++.h>

using namespace std;

template <typename T>
void printVector(std::vector<T> &vec, int index = 0) {
    cout << "[" << index << "] ";
    for(auto &iter: vec) {
        cout << "" << iter << " ";
    }
    cout << endl;
}

int main()
{

    //随机数普遍是通过线性同余运算产生的为伪随机,之前我们用rand() % mod
    //这里我们尝试随机数引擎

    auto randomVectorUnsigned = [](int count) -> vector<unsigned int> {
        int random_seed = time(0);
        //可以用下面两种方式设置seed
        default_random_engine e(random_seed);
        e.seed(random_seed);
        //随机数
        uniform_int_distribution<unsigned int>u(0, 100);
        vector<unsigned int>vec;
        for(auto i = 1; i <= count; ++i) {
            vec.push_back(u(e));
        }
        return vec;
    };

    vector<unsigned int> test_int = randomVectorUnsigned(10);
    printVector(test_int, 1);

    auto randomVectorDouble = [](int count) -> vector<double> {
        int random_seed = time(0);
        //可以用下面两种方式设置seed
        default_random_engine e(random_seed);
        e.seed(random_seed);
        //随机数
        uniform_real_distribution<double>u(0, 10);
        vector<double>vec;
        for(auto i = 1; i <= count; ++i) {
            vec.push_back(u(e));
        }
        return vec;
    };
    vector<double> test_double = randomVectorDouble(10);
    printVector(test_double, 2);

    //生成非均匀的随机数

    auto randomVector = [](int count) -> vector<double> {
        int random_seed = time(0);
        //可以用下面两种方式设置seed
        default_random_engine e(random_seed);
        e.seed(random_seed);
        //随机数
        normal_distribution<> n(4, 1.5); //均值4,标准差1.5;
        vector<double>vec;
        for(auto i = 1; i <= count; ++i) {
            vec.push_back(n(e));
        }
        return vec;
    };
    vector<double> test = randomVector(10);
    printVector(test);


    return 0;
}

转载于:https://www.cnblogs.com/Q1143316492/p/10359713.html

相关文章:

  • 《学习之道》第六章番茄工作法
  • 加密_滴答~滴
  • Ext中 grid 设置行样式
  • 技术研究 | 我所了解的物联网设备渗透手段(硬件篇)
  • Exif xss
  • C语言复习1_变量与数据类型
  • linux操作文本三个命令awk、grep、sed
  • 【c#】RabbitMQ学习文档(三)Publish/Subscribe(发布/订阅)
  • 食用指南
  • ffmpeg 推送、保存rtmp 流命令
  • 记账软件——第三天
  • 通过域对象获取当前项目的文件路径
  • VBA中Option的四种用法
  • Mybatis获取Connection
  • WPF图形图像相关类
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Effective Java 笔记(一)
  • ES6--对象的扩展
  • javascript 总结(常用工具类的封装)
  • Mocha测试初探
  • pdf文件如何在线转换为jpg图片
  • PV统计优化设计
  • 成为一名优秀的Developer的书单
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 算法-插入排序
  • Spring Batch JSON 支持
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​queue --- 一个同步的队列类​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • ( 10 )MySQL中的外键
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (done) 两个矩阵 “相似” 是什么意思?
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)http协议
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .net 发送邮件
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net下简单快捷的数值高低位切换
  • /proc/stat文件详解(翻译)
  • ::before和::after 常见的用法
  • @RequestMapping用法详解
  • @synthesize和@dynamic分别有什么作用?
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析
  • [C++]命名空间等——喵喵要吃C嘎嘎