c++11 random_device 真隨機數最簡單應用
阿新 • • 發佈:2022-05-28
c++11提供了random_device,據說是真隨機數,不過只有在Linux下是真隨機,因為Linux有熵池;在Windows下只是呼叫了rand_s。( ・´ω`・ )
程式碼如下
#define random(min,max) (gen()%(max-min+1))+min #include <random>//隨機數 using namespace std; int main() { random_device rd;//隨機數發生器 mt19937 gen(rd());//隨機數引擎 cout<<random(0,100)<<endl; }
不過不知為什麼,每次開啟程式隨機數序列都一樣,如有特殊需要可以加上標頭檔案,然後把
(gen()%(max-min+1))+min
改為
(gen()*time(NULL)%(max-min+1))+min
如果沒有看懂,可以去看以下講解
C++11隨機數的正確開啟方式
mt19937是什麼鬼?
或者檢視官方文件
random_device
mt19937
如果還沒有看懂,建議使用srand()和rand()
#define random(min,max) (rand()%(max-min+1))+min #include <random>//隨機數 using namespace std; int main() { srand(time(NULL)); cout<<random(0,100)<<endl;
}
————————————————
版權宣告:本文為CSDN博主「Dwi yn」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/jgjfror/article/details/113790271