日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何正确地生成一个随机数

發布時間:2023/12/3 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何正确地生成一个随机数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考文章
筆記 | 如何正確地生成一個隨機數
CF曾提到:Don’t use rand(): a guide to random number generators in C++
文章總結:
1 .rand()的隨機范圍太小了,在某些平臺下(例如 Windows)RAND_MAX 只有 32768。如果需要的范圍大于 32768,那么指定 min 和 max 參數就可以生成大于 RAND_MAX 的數了,或者考慮用 mt_rand() 來替代它。
2. random_shuffle(打亂數組順序)
3. rand()使用的偽隨機算法是 linear congruential generator (線性同余發生器),在低位循環節很低
rand()不行那咋辦?文章中給了東西:mt19937(范圍:無限制,可以自己設定),mt19937是c++11中加入的新特性,具有速度快,周期長的特點
無范圍:
使用方法:

#include<random> #include<ctime> std::mt19937 rnd(time(0)); int main() {printf("%lld\n",rnd());return 0; }

C++無范圍限制

#include <iostream> #include <chrono> #include <random> using namespace std; int main() {// 隨機數種子unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();mt19937 rand_num(seed); // 大隨機數cout << rand_num() << endl;return 0; }

手動加上范圍:

#include <iostream> #include <chrono> #include <random> using namespace std; int main() {// 隨機數種子unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();mt19937 rand_num(seed); // 大隨機數uniform_int_distribution<long long> dist(0, 1000000000); // 給定范圍cout << dist(rand_num) << endl;return 0; }

總結

以上是生活随笔為你收集整理的如何正确地生成一个随机数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。