亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++中生成隨機數(shù)的方法總結(jié)

 更新時間:2024年05月08日 12:02:37   作者:litanyuan  
這篇文章主要介紹了C++中生成隨機數(shù)的方法總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

背景

C++ 11 在頭文件 #include 中定義了隨機數(shù)庫,也可以使用 C 中生成隨機數(shù)的方法。

C 生成隨機數(shù)

概述

C 語言中使用 rand() 函數(shù)產(chǎn)生 0 ~ RAND_MAX 范圍內(nèi)均勻分布到整數(shù),其中 RAND_MAX 是和系統(tǒng)相關(guān)的一個固定值。

#include<stdlib.h> 
#include<time.h> 

srand(time(nullptr));//設(shè)置隨機數(shù)種子
rand();//產(chǎn)生一個隨機數(shù)

限定隨機數(shù)范圍

{//產(chǎn)生 [0,b) 范圍內(nèi)到隨機數(shù)  
  int randoxNumber = rand() % b ;
}
{//產(chǎn)生 [a,b) 范圍內(nèi)到隨機數(shù) 
    int randoxNumber = a + rand() % ( b -a ) ;
}
{//產(chǎn)生 [a,b] 范圍內(nèi)到隨機數(shù) 
    int randoxNumber = a + rand() % ( b -a +1 ) ;
}
{//產(chǎn)生 [0,1] 范圍內(nèi)到隨機小數(shù) 
    double randoxNumber =rand() / RAND_MAX
}
{//產(chǎn)生 [0,1) 范圍內(nèi)到隨機小數(shù) 
    double randoxNumber =rand() / ( RAND_MAX +1 )
}

C++ 中的隨機數(shù)

概述

C++ 11 在頭文件 #include 中定義了隨機數(shù)庫,包括隨機數(shù)生成器和隨機數(shù)分布器。

隨機數(shù)生成器

①.概述

隨機數(shù)生成器用來使用指定的種子產(chǎn)生一個隨機數(shù)。

②.random_device

random_device 是標準庫提供到一個非確定性隨機數(shù)生成器,使用硬件作為隨機數(shù)來源,故其調(diào)用代價較高,一般用來產(chǎn)生隨機數(shù)種子。

random_device rd;
for (int i = 0; i < 10; ++i)
{
  cout << rd() << endl;
}

在這里插入圖片描述

③.default_random_engine

default_random_engine 是標準庫提供的默認隨機數(shù)生成器,其實現(xiàn)和編譯器有關(guān)。

random_device rd;
  
default_random_engine r_eng(rd());
for (int i = 0; i < 10; ++i)
{
  cout << r_eng() << endl;
}

④.minstd_rand

minstd_rand 是標準庫提供的采用線性同余算法的偽隨機數(shù)生成器。

random_device rd;
  
minstd_rand   r_eng(rd());
for (int i = 0; i < 10; ++i)
{
  cout << r_eng() << endl;
}

⑤.mt19937

mt19937 是標準庫提供的采用梅森旋轉(zhuǎn)算法的偽隨機數(shù)生成器,可以快速產(chǎn)生高質(zhì)量到隨機數(shù)。

random_device rd;
  
mt19937  r_eng(rd());
for (int i = 0; i < 10; ++i)
{
  cout << r_eng() << endl;
}

⑥.ranlux24_base

ranlux24_base 是標準庫提供的采用帶進位減法的偽隨機數(shù)生成器。

random_device rd;
  
ranlux24_base  r_eng(rd());
for (int i = 0; i < 10; ++i)
{
  cout << r_eng() << endl;
}

隨機數(shù)分布器

①.概述

隨機數(shù)分布器用于限定生成隨機數(shù)的范圍及分布類型。

②.uniform_int_distribution

uniform_int_distribution 用于生成指定范圍的均勻分布的整數(shù)。

random_device rd;//用于生成隨機數(shù)種子
mt19937 r_eng(rd());//隨機數(shù)生成器  
uniform_int_distribution<int> dis(1, 100);//隨機數(shù)分布器 閉區(qū)間

for (int i = 0; i < 10; ++i)
{
  cout << dis(r_eng) << endl;
}

在這里插入圖片描述

③.uniform_real_distribution

uniform_real_distribution 用于生成指定范圍的均勻分布的浮點數(shù)。

random_device rd;//用于生成隨機數(shù)種子
mt19937 r_eng(rd());//隨機數(shù)生成器  
uniform_real_distribution<double> dis(1, 100);//隨機數(shù)分布器 閉區(qū)間

for (int i = 0; i < 10; ++i)
{
  cout << dis(r_eng) << endl;
}

在這里插入圖片描述

④.normal_distribution

normal_distribution 用于生成指定均值和方差的正態(tài)分布的浮點數(shù)。

random_device rd;//用于生成隨機數(shù)種子
mt19937 r_eng(rd());//隨機數(shù)生成器  
normal_distribution  <> dis(4, 1.5);//隨機數(shù)分布器,均值、方差

for (int i = 0; i < 10; ++i)
{
  cout << dis(r_eng) << endl;
}

在這里插入圖片描述

⑤.bernoulli_distribution

bernoulli_distribution 用于生成二項分布到布爾值,可以指定 true 的概率。

random_device rd;//用于生成隨機數(shù)種子
mt19937 r_eng(rd());//隨機數(shù)生成器  
bernoulli_distribution   dis( 0.6);//隨機數(shù)分布器,生成 1 的概率是 0.6

for (int i = 0; i < 10; ++i)
{
  cout << dis(r_eng) << endl;
}

在這里插入圖片描述

Qt 中的隨機數(shù)

概述

Qt 中生成隨機數(shù)的方法和 C 語言中差不多,對應到函數(shù)為 qsrand() 、qrand()。使用使需要包含頭文件 #include 。

代碼示例

auto seed = QDateTime::currentDateTime().toMSecsSinceEpoch();

qsrand(seed);
for (int i = 0; i < 10; ++i)
{
  qDebug() << qrand() % 10;// 0 - 9 范圍
}

以上就是C++中生成隨機數(shù)的方法總結(jié)的詳細內(nèi)容,更多關(guān)于C++生成隨機數(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++實現(xiàn)簡單的HTTP服務器

    C++實現(xiàn)簡單的HTTP服務器

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單的HTTP服務器的相關(guān)資料,感興趣的朋友可以參考下
    2016-05-05
  • C語言數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的簡單實例

    C語言數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的簡單實例

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 使用Objective-C獲取IPHONE手機IMSI序列號

    使用Objective-C獲取IPHONE手機IMSI序列號

    這篇文章主要介紹了使用Objective-C獲取IPHONE手機IMSI序列號的方法以及通過IMSI序列號獲取運營商、手機號的方法,非常的實用,有需要的小伙伴可以參考下。
    2015-04-04
  • Opencv光流運動物體追蹤詳解

    Opencv光流運動物體追蹤詳解

    這篇文章主要為大家詳細介紹了Opencv光流運動物體追蹤的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言版停車位管理系統(tǒng)

    C語言版停車位管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言版停車位管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++深入探究引用的本質(zhì)與意義

    C++深入探究引用的本質(zhì)與意義

    引用是C++一個很重要的特性,顧名思義是某一個變量或?qū)ο蟮膭e名,對引用的操作與對其所綁定的變量或?qū)ο蟮牟僮魍耆葍r,這篇文章主要給大家總結(jié)介紹了C++中引用的相關(guān)知識點,需要的朋友可以參考下
    2022-04-04
  • 詳解為什么指針被譽為C語言靈魂

    詳解為什么指針被譽為C語言靈魂

    說到指針,就不可能脫離開內(nèi)存,學會指針的人分為兩種,一種是不了解內(nèi)存模型,另外一種則是了解。不了解的對指針的理解就停留在“指針就是變量的地址”這句話,會比較害怕使用指針,特別是各種高級操作。本文將帶你詳細了解C語言指針
    2021-06-06
  • C語言實現(xiàn)房屋管理系統(tǒng)

    C語言實現(xiàn)房屋管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)房屋管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C語言在屏幕上輸出楊輝三角

    C語言在屏幕上輸出楊輝三角

    這篇文章主要介紹了在屏幕上輸出楊輝三角的方法,具有一定的參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • C++ Log日志類輕量級支持格式化輸出變量實現(xiàn)代碼

    C++ Log日志類輕量級支持格式化輸出變量實現(xiàn)代碼

    這篇文章主要介紹了C++ Log日志類輕量級支持格式化輸出變量實現(xiàn)代碼,需要的朋友可以參考下
    2019-04-04

最新評論