zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    redis被攻击,怎么预防
    Redis3.2.12单节点安装
    Linux安装Redis、后台运行、系统自启动
    Redis 密码设置和查看密码
    Redis protected-mode属性解读
    SpringCloud(9)----mysql实现配置中心
    SpringCloud(8)----zuul权限校验、接口限流
  • 原文地址:https://www.cnblogs.com/Q1143316492/p/10359713.html
Copyright © 2011-2022 走看看