随机数

一、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 << "\t";  //[0,50) 即 0 <= x < 50
    }
    std::cout << std::endl;
    for (int j = 0; j < 10; j++)
    {
        std::cout << rand() % 20 - 10 << "\t";  //[-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) << "\t"; //[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) << "\n";

        std::cout << 1 + (int)(10.0 * (rand() / (RAND_MAX + 1.0))) << " ";  //[1,10]  不要使用rand()%10
    }
}

C++时间:time

打乱容器元素的顺序

std::random_shuffle, std::shuffle

原文链接: https://www.cnblogs.com/mmmmmmmmm/p/14581001.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    随机数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404182

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月24日 下午6:44
下一篇 2023年4月24日 下午6:44

相关推荐