亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++隨機數生成實例講解

2020-05-23 14:05:46
字體:
來源:轉載
供稿:網友
這篇文章主要為大家詳細介紹了C++隨機數生成實例,如何利用C++來生成0——N-1之間的隨機數,感興趣的小伙伴們可以參考一下
 

如果讓你用C++來生成0——N-1之間的隨機數,你會怎么做?你可能會說,很簡單,看:

srand( (unsigned)time( NULL ) );rand() % N;

仔細想一下,這個結果是隨機的嗎(當然,我們不考慮rand()函數的偽隨機性)?
不是的,因為rand()的上限是RAND_MAX,而一般情況下,RAND_MAX并不是N的整數倍,那么如果RAND_MAX % = r,則0——r之間的數值的概率就要大一些,而r+1——N-1之間的數值的概率就要小一些。還有,如果N > RAND_MAX,那該怎么辦?
下面給出一種比較合適的方案,可以生成任意范圍內的等概率隨機數 result。最后還有一個更簡單的方法。
1、如果N<RAND_MAX+1,則要去除尾數,       

 R = RAND_MAX-(RAND_MAX+1)%N; //去除尾數  t = rand();  while( t > R ) t = rand();  result = t % N; // 符合要求的隨機數

2、如果 N>RAND_MAX,可以考慮分段抽樣,分成[n/(RNAD_MAX+1)]段,先等概率得到段再得到每段內的某個元素,這樣分段也類似地有一個尾數問題,不是每次都剛好分到整數段,一定或多或少有一個余數段,這部分的值如何選?。?/p>

選到余數段的數據拿出來選取,先進行一次選到余數段概率的事件發生,然后進行單獨選取:      

 r = N % (RAND_MAX+1); //余數  if ( happened( (double)r/N ) )//選到余數段的概率  result = N-r+myrandom(r); // myrandom可以用情況1中的代碼實現  else  result = rand()+myrandom(N/(RAND_MAX+1))*(RAND_MAX+1); // 如果選不到余數段再進行分段選取

完整的代碼:

#include<iostream.h>#include<time.h>#include<stdlib.h>const double MinProb=1.0/(RAND_MAX+1);bool happened(double probability)//probability 0~1{ if(probability<=0) {return false; } if(probability<MinProb) { return rand()==0&&happened(probability*(RAND_MAX+1)); } if(rand()<=probability*(RAND_MAX+1)) { return true; } return false;}long myrandom(long n)//產生0~n-1之間的等概率隨機數{ t=0; if(n<=RAND_MAX) { long R=RAND_MAX-(RAND_MAX+1)%n;//尾數 t = rand(); while ( t > r ) {  t = rand(); } return t % n; } else { long r = n%(RAND_MAX+1);//余數 if( happened( (double)r/n ) )//取到余數的概率 {  return n-r+myrandom(r); } else {  return rand()+myrandom(n/(RAND_MAX+1))*(RAND_MAX+1); } }} 還有另外一種非常簡單的方式,那就是使用random_shuffle( RandomAccessIterator _First, RandomAccessIterator _Last ).例如,生成0——N-1之間的隨機數,可以這么寫#include <algorithm>#include <vector>long myrandom( long N ){ std::vector<long> vl( N ); // 定義一個大小為N的vector for ( long i=0; i<N; ++i ) {  vl[i] = i; } std::random_shuffle( vl.begin(), vl.end() ); return (*vl.begin());}random_shuffle 還有一個三參數的重載版本random_shuffle( RandomAccessIterator _First, RandomAccessIterator _Last, RandomNumberGenerator& _Rand )

第三個參數可以接受一個自定義的隨機數生成器來把前兩個參數之間的元素隨機化。
這個方法的缺陷就是,如果只是需要一個隨機數的話,當N很大時,空間消耗很大!



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性jizz18性欧美| 久热精品视频在线观看| 亚洲国产欧美自拍| 久久久久久久久久久久久久久久久久av| 国产亚洲欧美日韩精品| 九九热99久久久国产盗摄| 亚洲精品国精品久久99热一| 亚洲欧美国产制服动漫| 亚洲欧洲国产伦综合| 91av视频在线播放| 亚洲毛片在线观看.| 亚洲成人精品视频| 精品在线观看国产| 国产高清在线不卡| 在线国产精品视频| 久久久久久国产精品美女| 热re99久久精品国产66热| 久久久精品国产网站| 亚洲国产精品中文| 亚洲护士老师的毛茸茸最新章节| 日本一区二区三区四区视频| 国产精品免费一区二区三区都可以| 亚洲欧美中文日韩在线v日本| 成人av电影天堂| 欧美激情一级精品国产| 伊人青青综合网站| 欧美成人免费全部| 国产成人福利夜色影视| 免费不卡在线观看av| 免费91麻豆精品国产自产在线观看| 久久精品在线播放| 国产精品高清免费在线观看| 日韩风俗一区 二区| 亚洲一区二区黄| 久久久亚洲影院你懂的| 自拍亚洲一区欧美另类| 国产精品一区二区三| 国模私拍一区二区三区| 77777亚洲午夜久久多人| 一区二区三区黄色| 色妞欧美日韩在线| 成人黄色av网| 日韩欧美主播在线| 97av在线影院| 国产成人精品视频在线观看| 精品在线小视频| 7m精品福利视频导航| 亚洲综合精品一区二区| 亚洲精品女av网站| 日韩欧美亚洲一二三区| 国产美女高潮久久白浆| 国产亚洲激情在线| 日韩精品视频免费专区在线播放| 成人午夜黄色影院| 国产精品999999| 久久久女女女女999久久| 亚洲毛片一区二区| 欧美日韩国产综合视频在线观看中文| 97av在线视频免费播放| 国产精品香蕉在线观看| 精品国内产的精品视频在线观看| 精品国产自在精品国产浪潮| 亚洲aa在线观看| 久久久久国产视频| 精品久久久免费| 亚洲精品自拍视频| 欧美激情一区二区久久久| 啪一啪鲁一鲁2019在线视频| 97精品视频在线观看| xvideos亚洲| 亚洲欧美在线一区二区| 久久久久999| 亚洲第一精品夜夜躁人人躁| 色偷偷综合社区| 欧美最猛性xxxxx免费| 欧美日韩电影在线观看| 亚洲精品黄网在线观看| 国产成人av网| 成人在线国产精品| 91av在线免费观看| 国产成人精品国内自产拍免费看| 日韩av网址在线观看| 国产精品一久久香蕉国产线看观看| 亚洲精品二三区| 久久精品国产成人| 欧洲亚洲妇女av| 亚洲国产精品免费| 在线精品视频视频中文字幕| 久久影视电视剧免费网站清宫辞电视| 日韩av免费在线播放| 福利二区91精品bt7086| 国产精品视频网| www国产亚洲精品久久网站| 神马久久久久久| 欧美在线播放视频| 亚洲欧洲国产一区| 热久久美女精品天天吊色| 欧美日韩美女视频| 欧美极品在线播放| 国产美女被下药99| 亚洲欧美综合v| 裸体女人亚洲精品一区| 国产成人亚洲综合91精品| 日韩在线播放视频| 精品日本美女福利在线观看| 国产成人精品综合久久久| 国产va免费精品高清在线| 亚洲在线免费观看| 日韩av在线播放资源| 北条麻妃在线一区二区| 欧美一级淫片丝袜脚交| 在线观看亚洲视频| 亚洲欧美成人精品| 国产偷亚洲偷欧美偷精品| 欧美精品18videosex性欧美| 欧美日韩成人在线视频| 欧美一级成年大片在线观看| 国产午夜精品视频免费不卡69堂| 亚洲精品少妇网址| 久久中文久久字幕| 777午夜精品福利在线观看| 国产精品第8页| 日韩视频中文字幕| 欧美日韩亚洲国产一区| 少妇久久久久久| 乱亲女秽乱长久久久| 在线中文字幕日韩| 亚洲精品成人av| 久久久精品视频在线观看| 日韩中文字幕欧美| 人体精品一二三区| 欧美精品激情在线| 欧美国产视频一区二区| 日韩av网站电影| 欧美日韩在线第一页| 欧美精品情趣视频| 亚洲电影免费观看高清| 久久久精品2019中文字幕神马| 国产日韩欧美在线看| 91精品国产高清久久久久久91| 久久久精品在线观看| 成人黄色免费片| 97视频在线免费观看| 亚洲男人的天堂在线| 久久6免费高清热精品| 国产精品福利网| 亚洲精品久久久久中文字幕二区| 一区二区亚洲欧洲国产日韩| 精品成人av一区| 亚洲午夜国产成人av电影男同| 亚洲精品久久久久久久久久久| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品人人做人人爽| 最近2019中文字幕大全第二页| 国产亚洲一区二区在线| 欧美高清视频在线播放| 久久国产精品首页| 国产亚洲精品一区二区| 日韩精品视频免费| 26uuu国产精品视频| 亚洲一区二区国产| 777午夜精品福利在线观看| 国产精品白丝jk喷水视频一区| 久久精品亚洲热|