青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

標(biāo)準(zhǔn)庫(kù)rand()函數(shù)的缺陷以及Blitz++隨機(jī)數(shù)生成的簡(jiǎn)介

newsuppy, 轉(zhuǎn)載請(qǐng)注明出處)

當(dāng)我們需要在某個(gè)任務(wù)中使用隨機(jī)數(shù),通常我們習(xí)慣于使用標(biāo)準(zhǔn)庫(kù)的rand函數(shù)。像這樣:srand(time(0)); // 時(shí)間種子

??????? rand() % MAX_RAND

標(biāo)準(zhǔn)庫(kù)的rand函數(shù)使用線性同余算法,是生成速度相當(dāng)快的一種隨機(jī)數(shù)生成算法。在多數(shù)情況下也確實(shí)能滿足我們的要求,但是對(duì)于一些特殊目的應(yīng)用這個(gè)算法生成的隨機(jī)數(shù)是不行的,比如某些加密算法,蒙特卡羅積分等(在.NET中創(chuàng)建隨機(jī)密碼的加密安全隨機(jī)數(shù)就不能使用Random類的線性同余隨機(jī)數(shù),而要使用System.Security.Cryptography命名空間中的相關(guān)隨機(jī)數(shù)生成類)。

這個(gè)線性同余算法的實(shí)現(xiàn)可以在很多書籍中找到。下面我給出一個(gè)The C Programming Langurage 2nd中的一個(gè)實(shí)現(xiàn),這也是普遍使用的標(biāo)準(zhǔn)庫(kù)隨機(jī)數(shù)算法的實(shí)現(xiàn):

?? unsigned long int next =1;

?

?? /* rand:? return pseudo-random integer on 0..32767 */

? ? int rand(void)

?? {

?????? next = next *1103515245+12345;

?????? return ( unsigned int )(next/65536)%32768;

?? }

?

?? /* srand:? set seed for rand() */

?? void srand(unsignedint seed)

?? {

?????? next = seed;

?? }

?

這個(gè)實(shí)現(xiàn)的問(wèn)題在于rand函數(shù)return行中的那個(gè)32768,在標(biāo)準(zhǔn)庫(kù)中這個(gè)數(shù)字定義為RAND_MAX宏,在VisualC++Mingw32編譯器的stdlib.h頭文件(或者cstdlib)中你都可以發(fā)現(xiàn)RAND_MAX的值為32768。也就是說(shuō)這個(gè)算法的隨機(jī)數(shù)分布在0--RAND_MAX中,而在一般編譯器中就是0--32768。假設(shè)你的算法需要的是300000多個(gè)的隨機(jī)數(shù),那么使用rand函數(shù)會(huì)產(chǎn)生重負(fù)次數(shù)近30次的隨機(jī)數(shù)!

所以在這里我將簡(jiǎn)單介紹一下如何使用Blitz++庫(kù)中的隨機(jī)數(shù)生成類。不過(guò)在這里我不能夠證明Blitz++隨機(jī)數(shù)算法相對(duì)于標(biāo)準(zhǔn)庫(kù)有什么優(yōu)越性。Blitz++的源代碼是開放的,你可以完全了解它的隨機(jī)數(shù)算法的實(shí)現(xiàn)

Blitz++中隨機(jī)數(shù)類組織在ranlib namespace中,使用方法也非常簡(jiǎn)單,seed成員函數(shù)種入種子后,再用random成員函數(shù)就可以了。Blitz++中包括了產(chǎn)生各種概率分布情況的隨機(jī)數(shù),列舉如下:均勻分布(Uniform),正態(tài)分布(Normal),指數(shù)分布(Exponential),Beta分布,Gamma分布,Χ方分布,F分布,離散均勻分布。具體地可以參考Blitz++文檔的第九章。本文將會(huì)演示正態(tài)分布的隨機(jī)數(shù)類。

				NormalUnit<>()?? 
				標(biāo)準(zhǔn)正態(tài)分布,
				μ
				 = 0, 
				σ
				 = 1;
				?
		
				Normal<>(T mean, T standardDeviation) 
				正態(tài)分布,N(
				μ
				, 
				σ
				^2
				)
				,其中mean就是
				μ
				,standardDeviation
				就是
				σ
				
		

Blitz++ 中隨機(jī)數(shù)類的seed是共享的,調(diào)用一個(gè)類的seed后,其他類也同樣種入了相同的種子。對(duì)于種子的來(lái)源,Blitz++文檔中有這樣一個(gè)注意事項(xiàng):

Note: you may be tempted to seed the random number generator from a static initializer. Don't do it! Due to an oddity of C++, there is no guarantee on the order of static initialization when templates are involved. Hence, you may seed the RNG before its constructor is invoked, in which case your program will crash. If you don't know what a static initializer is, don't worry -- you're safe!

(幸運(yùn)的是我也不太清楚static initializer具體指什么,:- )

1 ,先來(lái)看一個(gè)標(biāo)準(zhǔn)正態(tài)分布的例子,根據(jù)3 σ 法則(正態(tài)分布的隨機(jī)數(shù)幾乎全部落在( μ -3 σ , μ +3 σ ) ),這些隨機(jī)數(shù)應(yīng)該大部分落在(-3, 3)之間。

下面的程序產(chǎn)生10000個(gè)正態(tài)分布隨機(jī)數(shù),然后導(dǎo)入Matlab生成圖形,橫坐標(biāo)是隨機(jī)數(shù)的序數(shù),縱坐標(biāo)是隨機(jī)數(shù)值。很顯然,大部分點(diǎn)在3 σ區(qū)間內(nèi)。在區(qū)間 ( μ - σ , μ + σ)中數(shù)據(jù)點(diǎn)最密。

#include <random/uniform.h>

#include <random/normal.h>

#include <iostream>

#include <fstream>

#include <ctime>

#include <cstdlib>

using namespace std;

using namespace ranlib;

?

int main()

{

??? const size_t MAXGEN =10000;

??? NormalUnit<float> rnd;

?

??? rnd.seed(time(0));

?

??? ofstream file("c:\\file.txt");

?

??? // generator Normal distribution random number

??? for (size_t i=0; i<MAXGEN;++i)

??? {

??????? file << rnd.random()<<" ";

??? }

}

2 下面是一個(gè)服從于 μ= 10,σ= 2的正態(tài)分布,根據(jù)3σ法則,大部分點(diǎn)應(yīng)該落在(4,16)之間。

#include <random/uniform.h>

#include <random/normal.h>

#include <iostream>

#include <fstream>

#include <ctime>

#include <cstdlib>

using namespace std;

using namespace ranlib;

?

int main()

{

??? const size_t MAXGEN =1000000;

??? const int mu =10;

??? const int sigma =2;

??? Normal < float > rnd(mu,sigma);

?

??? rnd.seed(time(0));

?

??? ofstream file("c:\\file.txt");

?

??? // generator Normal distribution random number

??? for (size_t i=0; i<MAXGEN;++i)

??? {

?? ?????file << rnd.random()<<" ";

??? }

}

?

3,生成前述正態(tài)分布的鐘型曲線(PDF)。

這里產(chǎn)生1M的float隨機(jī)數(shù),然后乘以10轉(zhuǎn)型為整數(shù),統(tǒng)計(jì)在區(qū)間0-170之間隨機(jī)數(shù)出現(xiàn)的概率,這樣再導(dǎo)入Matlab生成圖形就是一個(gè)近似的正態(tài)分布的鐘型曲線了。

?

?

#include <random/uniform.h>

#include <random/normal.h>

#include <iostream>

#include <fstream>

#include <ctime>

#include <cstdlib>

using namespace std;

using namespace ranlib;

?

int main()

{

??? const size_t MAXGEN =1000000;

??? const int mu =10;

??? const int sigma =2;

??? Normal < float > rnd(mu,sigma);

?

??? rnd.seed(time(0));

?

??? ofstream file("c:\\file.txt");

?

??? float *rndArray =newfloat[MAXGEN];

??? // generator Normal distribution random number

??? for (size_t i=0; i<MAXGEN;++i)

??? {

??????? rndArray[i]= rnd.random();

??? }

?

??? int *rndConvertIntArray =newint[MAXGEN];

??? int multiple =10;

??? // convert float random number to integer

??? for (size_t i=0; i<MAXGEN;++i)

??? {

??????? rndConvertIntArray[i]=int(rndArray[i]* multiple);

??? }

?

??? const size_t PDFSIZE =(mu +3* sigma)* multiple;

??? const size_t redundancy =10;

??? int *pdf =newint[PDFSIZE+redundancy];

??? for (size_t i=0; i<PDFSIZE+redundancy;++i)

??? {

??????? pdf[i]=0;

??? }

?

??? // generator PDF(Probability Distribution Function), Normal distribution is a "bell" shape

??? for (size_t i=0; i<MAXGEN;++i)

??? {

?? ????? if (rndConvertIntArray[i]<= PDFSIZE+redundancy-1)

??????? {

??????????? ++pdf[rndConvertIntArray[i]];

??????? }

??? }

?

??? for (size_t i=0; i<PDFSIZE+redundancy;++i)

??? {

??????? file << pdf[i]? <<" ";

??? }

?

??? delete [] rndArray;

??? delete [] rndConvertIntArray;

??? delete [] pdf;

}

?

鐘型曲線,當(dāng)然不是特別光滑 ( J ), 大部分隨機(jī)數(shù)都出現(xiàn)在( 4 16 )區(qū)間內(nèi)。

?

總結(jié), Blitz++ 的隨機(jī)數(shù)生成類應(yīng)該說(shuō)是值得信任的。

[ 參考文獻(xiàn) ]

1,? 概率論與數(shù)理統(tǒng)計(jì)( 3rd ), 浙江大學(xué) 盛驟 謝式千 潘承毅 高等教育出版社

2,? C 數(shù)值算法( 2nd ), [ ] William H. Press, Saul A. Teukolsky, William T. Vetterling,

??????????????????? ?????Brian P. Flannery

????????????????????? 傅祖蕓 趙梅娜 丁巖石 等譯,傅祖蕓 審校

3 Matlab 6.5 的文檔 ??? The MathWorks, Inc.


作者Blog: http://blog.csdn.net/newsuppy/

posted on 2006-07-01 13:27 楊粼波 閱讀(1858) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            校园激情久久| 欧美激情视频给我| 欧美xx69| 欧美电影免费观看高清完整版| 午夜精品剧场| 午夜精品影院在线观看| 亚洲欧美一区二区在线观看| 亚洲一区在线播放| 午夜久久久久久久久久一区二区| 在线亚洲自拍| 亚洲欧美日韩第一区| 亚洲欧美久久久久一区二区三区| 亚洲免费视频在线观看| 欧美一区不卡| 免费在线看一区| 99精品视频一区二区三区| 99精品国产99久久久久久福利| 一卡二卡3卡四卡高清精品视频| 中文在线资源观看网站视频免费不卡| 亚洲最新在线| 久久精品成人欧美大片古装| 麻豆九一精品爱看视频在线观看免费| 亚洲第一在线综合在线| 亚洲精品日韩精品| 亚洲欧美成人在线| 久热re这里精品视频在线6| 欧美电影免费观看高清| 国产精品久久久久久一区二区三区| 国产在线日韩| 日韩午夜电影av| 久久精品久久99精品久久| 亚洲国产精品久久久久婷婷老年| 一区二区高清视频在线观看| 久久精品五月婷婷| 欧美视频二区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲视频网在线直播| 久久精品道一区二区三区| 亚洲国产欧美不卡在线观看| 亚洲专区免费| 欧美日韩国产综合久久| 激情av一区二区| 亚洲欧美日本在线| 91久久香蕉国产日韩欧美9色| 日韩视频在线一区| 久久久噜噜噜久久中文字免 | 亚洲欧美经典视频| 欧美激情国产日韩| 一区二区三区在线看| 亚洲欧美日韩直播| 久久国产精品亚洲va麻豆| 亚洲精选国产| 欧美成人午夜视频| 在线播放中文一区| 久久久欧美精品| 欧美亚洲网站| 国产精品一区二区在线观看| 艳妇臀荡乳欲伦亚洲一区| 欧美福利视频| 噜噜噜久久亚洲精品国产品小说| 国产日韩欧美精品综合| 欧美一级片久久久久久久| 亚洲日本aⅴ片在线观看香蕉| 久久久999| 欧美一级一区| 国产一区二区三区奇米久涩| 欧美一区二区三区在线观看| 亚洲在线中文字幕| 国产精品视频你懂的| 西西人体一区二区| 亚洲欧美韩国| 国产一区二区精品| 久久字幕精品一区| 久久久夜精品| 亚洲精品乱码久久久久久按摩观| 欧美一区二区黄| 欧美一区二区三区成人| 国内精品嫩模av私拍在线观看| 久久国产精品久久久久久久久久 | 午夜精品久久久久久久蜜桃app | 极品尤物av久久免费看| 久热精品视频| 欧美电影在线免费观看网站| 日韩亚洲一区二区| 国产精品99久久久久久人| 国产一区二区欧美日韩| 免费毛片一区二区三区久久久| 免费日韩视频| 亚洲欧美三级在线| 久久久亚洲精品一区二区三区| 亚洲精品美女在线观看| 99伊人成综合| 在线成人av| 99riav国产精品| 国产情人节一区| 欧美激情亚洲国产| 国产精品免费一区豆花| 欧美成人在线网站| 国产精品福利网| 红桃av永久久久| 91久久黄色| 国产一区二区无遮挡| 亚洲国产小视频| 国产拍揄自揄精品视频麻豆| 亚洲国产高清在线| 国产主播精品| 亚洲图片激情小说| av不卡在线看| 久久免费视频网| 性欧美超级视频| 欧美区国产区| 国产综合久久久久久鬼色| 亚洲国产精品久久久久久女王| 国产免费成人在线视频| 亚洲精品影院在线观看| 在线观看日韩一区| 亚洲综合电影一区二区三区| 亚洲乱码日产精品bd| 性欧美videos另类喷潮| 日韩亚洲欧美综合| 久久另类ts人妖一区二区| 午夜一区不卡| 欧美成人精品高清在线播放| 欧美亚洲一区二区在线| 欧美成人四级电影| 亚洲精品欧美精品| 亚洲欧美日韩精品一区二区| 亚洲精品日本| 久久国产欧美精品| 亚洲综合色网站| 国产精品国产a| 欧美高清影院| 国产偷国产偷亚洲高清97cao| 亚洲人成人一区二区在线观看| 国产自产精品| 久久久噜久噜久久综合| 欧美一区二区三区四区在线| 欧美精品www在线观看| 免费在线欧美黄色| 国产亚洲欧洲一区高清在线观看| 欧美激情免费观看| 激情亚洲网站| 欧美在线观看视频| 欧美一区二区三区视频在线| 国产伦精品一区二区三区视频孕妇| 亚洲国产精品久久| 亚洲国产精品va| 久久久精品国产99久久精品芒果| 亚洲欧美日韩国产成人精品影院 | 亚洲人成欧美中文字幕| 伊人婷婷欧美激情| 久久av一区二区三区漫画| 亚洲欧美日韩精品| 国产亚洲va综合人人澡精品| 亚洲午夜免费视频| 日韩午夜激情av| 欧美成人国产va精品日本一级| 亚洲精品一区二区三区av| 欧美精品一区三区在线观看| 欧美激情在线狂野欧美精品| 在线观看日韩av先锋影音电影院| 久久精品国产999大香线蕉| 久久国产精品久久国产精品| 精品成人一区二区| 激情久久久久久久| 一区二区三区精品视频| 久久九九免费| 狠狠色伊人亚洲综合网站色| 久久亚裔精品欧美| 香蕉久久久久久久av网站| 国产亚洲精品v| 久久精彩免费视频| 美女久久一区| 亚洲啪啪91| 久久久国产精彩视频美女艺术照福利| 欧美激情精品久久久久久大尺度| 亚洲国产高清aⅴ视频| 欧美大片免费| 99视频在线观看一区三区| 99国产精品视频免费观看一公开 | 禁断一区二区三区在线| 久久艳片www.17c.com| 欧美成人午夜激情| 亚洲毛片在线| 国产精品亚洲一区| 欧美精品电影| 亚洲综合色婷婷| 免播放器亚洲一区| 在线视频亚洲一区| 国产精品一二三| 久久一二三四| 一二三四社区欧美黄| 久久久www成人免费无遮挡大片| 依依成人综合视频| 国产三级精品在线不卡| 欧美aⅴ一区二区三区视频| 日韩视频免费| 开元免费观看欧美电视剧网站| 亚洲国产婷婷| 国产毛片一区二区|