zoukankan      html  css  js  c++  java
  • 随机数

    引擎

    engine e;
    engine e(seed);
    engine e(e2); copy构造
    e.seed(); 将引擎设为初始状态
    e.seed(seed); 将引擎设为根据seed形成的状态
    e(); 返回下一个随机值,并前进其状态
    e.discard(n); 前进接下来的n个状态,很像n此调用e(),但可能更快
    e1 == e2;
    e1 != e2;
    ostrm << e; 将e的状态写入流
    ostrm >> e; 从流中读取一个新的状态放入e

    分布

    均匀分布
    uniform_int_distribution //short 、int 、long 、long long
    uniform_real_distribution //float 、double 、long double

    伯努利、泊松分布

    正态分布
    normal_distribution

    抽样分布
    discrete_distribution

    distr::result_type 被生成值得算术形式
    distr d; 默认构造
    distr d(args);

    d(e); 返回引擎e所生成的下一个值,e将推进其状态
    d.min();
    d.max();
    d1 == d2;
    d1 != d2;
    ostrm << d;
    istrm >> d;

    distr::param_type 参数化类型
    distr d(pt);创建一个分布,以param_type pt完成参数化
    d.param(pt); 将之前参数化类型设置为pt
    d.param();返回参数化类型
    d(e,pt);根据引擎e和pt返回下一个值,并推进e的状态
    d.pa


    复数 <complex>

    std::complex<double> c1(4.0, 3.0); //4+3i

    std::complex<float> c2(std::polar(5.0, 0.75)); //极坐标 长5,相角为0.75

    std::cout << "c1: " << c1 << std::endl;
    std::cout << "c2: " << c2 << std::endl;

    std::real(c2);
    c2.real();
    c2.real(1.7);

    std::cout << c2.real() << std::endl;


    std::imag(c2);
    c2.imag();
    c2.imag(1.7);

    abs(c1); //长
    norm(c1); //长的平方
    std::arg(c2);//相角


    polar(l,a);//产生一个临时的复数,极坐标表示法,相角a默认为0
    conj(c);//产生一个临时的复数,是c的共轭复数
    proj(c);//产生一个临时的复数,是在黎曼球面上的投影


    全局数值函数 <cmath> 和 <cstdlib>

    <cmath>:

    pow() 幂函数
    exp() 指数函数 y=2^x
    sqrt() 平方根
    log() 自然对数
    log10()

    sin()
    cos()
    tan()

    sinh() 双曲正弦
    cosh() 双曲余弦
    tanh() 双曲正切

    asin() 反正弦
    acos()
    atan()

    atan2() 商的反正切
    asinh() 反双曲正弦
    acosh()
    atanh()

    ceil() 大于某个浮点数的最小整数
    floor() 小于某个浮点数的最大整数

    fabs() 浮点数的绝对值
    fmod() 浮点数相除的余数

    frexp() 将浮点数转换成小数部分和整数部分
    ldexp() 将浮点数乘以2的某个整数次幂
    modf() 将浮点数分离为带正负号的整数和分数

    例子:

    #include "stdafx.h"
    
    #include <iostream>
    
    #if 0
    #include <random>
    #include <algorithm>
    #include <vector>
    
    int main()
    {
    	int seed = time(NULL);//种子
    	//引擎
    	std::default_random_engine dre(seed);//种子相同的或不设置种子的其顺序是相同的
    	//分布
    	//最小值默认为0, 最大值默认为<numeric_limits<type>::max(),两者都包括
    	std::uniform_int_distribution<int> di(10, 20);
    	for (int i = 0; i < 20; ++i)
    	{
    		//std::cout << dre() << " ";
    		std::cout << di(dre) << " ";
    	}
    	std::cout << std::endl;
    
    	di.param();
    
    	//std::default_random_engine dre1(seed);
    	//for (int i = 0; i < 20; ++i)
    	//{
    	//	std::cout << di(dre1) << " ";
    	//}
    	//std::cout << std::endl;
    
    
    	std::uniform_real_distribution<double> dr(10, 20);//不包括20,默认为[0.0, 0.999...) 即dr(0.0, 1.0);
    	for (int i = 0; i < 8; ++i)
    	{
    		std::cout << dr(dre) << " ";
    	}
    	std::cout << std::endl;
    
    
    	//弄乱容器或区间内的元素
    	std::vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    	std::shuffle(v.begin(), v.end(), dre);
    	for (int i = 0; i < v.size(); ++i)
    	{
    		std::cout << v[i] << " ";
    	}
    	std::cout << std::endl;
    
    
    	std::shuffle(v.begin(), v.end(), std::default_random_engine());//传入一个临时引擎,会导致每次洗牌的方法相同
    	for (int i = 0; i < v.size(); ++i)
    	{
    		std::cout << v[i] << " ";
    	}
    	std::cout << std::endl;
    
    
    	std::uniform_int_distribution<> d(0, 20);
    	d.a(); d.param().a();//最小值
    	d.b(); d.param().b();//最大值
    
    	std::uniform_int_distribution<>::param_type pt(100, 200);
    	d(dre, pt);//在pt返回生成一个随机值
    	d.param(pt);//替换参数化
    }
    #endif // 0
    
    //复数
    #include <complex>
    
    int main()
    {
    	std::complex<double> c1(4.0, 3.0); //4+3i
    
    	std::complex<float> c2(std::polar(5.0, 0.75)); //极坐标 长5,相角为0.75
    
    	std::cout << "c1: " << c1 << std::endl;
    	std::cout << "c2: " << c2 << std::endl;
    
    	std::real(c2);
    	c2.real();
    	c2.real(1.7);
    	std::cout << c2.real() << std::endl;
    
    }
    

      

  • 相关阅读:
    JVM 的主要组成部分及其作用
    一天一个 Linux 命令(5):pwd命令
    算法-经典趣题-马踏棋盘(又称骑士周游)
    SAP HANA Schemas 和 HDI Containers
    如何手动下载并安装 Visual Studio Code 的 SAP Fiori tools
    一个最简单的 Github workflow 例子
    SAP UI5 初学者教程之七
    最近看的动漫和电影
    关于工作,干了这碗鸡汤
    啊啊啊啊啊啊
  • 原文地址:https://www.cnblogs.com/xslwm/p/9393663.html
Copyright © 2011-2022 走看看