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

    一、srand()&rand()

    srand用来设计生成随机数的种子,参数为uint32_t,无返回值。rand用来生成随机数,无参数。

    #include <iostream>
    
    int main()
    {
    
    	//srand(ungigned int)参数不一样才可以生成不一样的随机数,
    	//不然每次执行程序生成的随机数和上次程序运行生成的一样
    	//time(nullptr) 返回的是当前系统时间,一直在变
    	srand(static_cast<unsigned int>(time(nullptr)));
    	for(int i = 0;i<10;i++)
    	{
    		std::cout << rand() % 50 << "	";  //[0,50) 即 0 <= x < 50
    	}
    	std::cout << std::endl;
    	for (int j = 0; j < 10; j++)
    	{
    		std::cout << rand() % 20 - 10 << "	";  //[-10,10)
    	}
    	std::cout << std::endl;
    	for (int k = 0; k < 10; k++)
    	{
    		//RAND_MAX = 0x7FFF
    		//rand()产生一个[0,0x7FFF]即0-32767之间的随机数
    		std::cout << rand() / static_cast<double>(RAND_MAX+1) << "	"; //[0,1)浮点数
    	}
    	return 0;
    }
    

    二、random&srandom

    C++11随机数

    C++11随机数

    中文标准库:伪随机数生成,包含多种随机数引擎以及分布

    uniform_real_distribution生成的随机数类型

    float、double、long double

    uniform_int_distribution生成的随机数类型

    int、unsigned、short、unsigned short、long、unsigned long、long long、unsigned long long

    #include <iostream>
    #include <random>
    #include <chrono>
    
    int main()
    {
    	//参数表示生成随机数的种子,种子不同每次运行程序生成的随机数才能不同
    	std::default_random_engine generator1(static_cast<uint32_t>(std::chrono::system_clock::now().time_since_epoch().count()));
    	std::default_random_engine generator2(static_cast<uint32_t>(time(nullptr)));
    
    	std::default_random_engine generator;  //使用默认种子,每次运行程序生成的随机数相同
    	std::uniform_int_distribution<int> distribution1(0, 255);  //生成[0,255]之间的int型随机数
    
    	std::uniform_real_distribution<float> distribution2(0.0f, 1.0f);  //生成[0,1]之间的随机float值
    
    	for (int i = 0; i < 10; i++)
    	{
    		std::cout << distribution1(generator);  // 0-255
    
    		std::cout << distribution2(generator1) << "
    ";
    
    		std::cout << 1 + (int)(10.0 * (rand() / (RAND_MAX + 1.0))) << " ";  //[1,10]  不要使用rand()%10
    	}
    }
    

    C++时间:time

    打乱容器元素的顺序

    std::random_shuffle, std::shuffle

  • 相关阅读:
    SpringBoot自定义starter
    Vue中$nextTick()用法
    Vue中filters使用data的数据
    Vue页面生成二维码
    Vue页面实现打印功能
    Vue中监听(watch)的使用
    Vue中判断对象属性是否存在
    大三寒假学习进度(十九)
    大三寒假学习进度(十八)
    大三寒假学习进度(十七)
  • 原文地址:https://www.cnblogs.com/mmmmmmmmm/p/14581001.html
Copyright © 2011-2022 走看看