在C++ 中生成指定範圍內的隨機數 - Techie Delight

文章推薦指數: 80 %
投票人數:10人

这篇文章将讨论如何在C++ 中生成指定范围内的随机数. ... int random(int low, int high) ... 標頭中還有其他幾個預定義的隨機數生成器 , 如所列這裡. 跳到內容 這篇文章將討論如何在C++中生成指定範圍內的隨機數。

1.使用std::uniform_int_distribution 在現代C++中生成兩個值(包括)之間的隨機數的簡單解決方案是使用std::uniform_int_distribution,它生成均勻分佈在指定閉合區間上的隨機整數值。

以下解決方案在給定的封閉區間內產生高質量的整數隨機數,其中std::uniform_int_distribution.它用std::random_device獲取標準mersenne_twister_engine的種子std::mt19937,基於MersenneTwister算法。

1234567891011121314151617181920 #include#include std::random_devicerd;std::mt19937gen(rd()); intrandom(intlow,inthigh){    std::uniform_int_distribution<>dist(low,high);    returndist(gen);} intmain(){    for(inti=0;i<10;i++){        std::cout<#include#include#include boost::mt19937engine; intrandom(intlow,inthigh){    boost::uniform_int<>dist(low,high);    boost::variate_generator<:mt19937>>vgen(engine,dist);    returnvgen();} intmain(){    for(inti=0;i<10;i++){        std::cout<,如所列這裡.以下解決方案使用std::default_random_engine隨機數發生器std::uniform_int_distribution. 12345678910111213141516171819 #include#include std::default_random_enginegen; intrandom(intlow,inthigh){    std::uniform_int_distribution<>dist(low,high);    returndist(gen);} intmain(){    for(inti=0;i<10;i++){        std::cout<#include#include unsignedseed=std::chrono::system_clock::now().time_since_epoch().count();std::default_random_enginegen(seed); intrandom(intlow,inthigh){    std::uniform_int_distribution<>dist(low,high);    returndist(gen);} intmain(){    for(inti=0;i<10;i++){        std::cout<並返回一個介於0和RAND_MAX(兩者都包含)。

在封閉範圍內生成隨機值[low,high],你可以使用表達式low+rand()%(high-low+1),播種後rand()具有隨機值(例如當前時間)的函數。

12345678910111213141516171819 #include#include#include intrandom(intlow,inthigh){    returnlow+rand()%(high-low+1);} intmain(){    srand(time(NULL));     for(inti=0;i<10;i++){        std::cout<標題。

1234567891011 #include#include intmain(){    for(inti=0;i<10;i++){        std::cout<<:experimental::randint fifo lifo trie>



請為這篇文章評分?