• <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>
            隨筆 - 70  文章 - 160  trackbacks - 0

            公告:
            知識(shí)共享許可協(xié)議
            本博客采用知識(shí)共享署名 2.5 中國(guó)大陸許可協(xié)議進(jìn)行許可。本博客版權(quán)歸作者所有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意不得隨機(jī)刪除文章任何內(nèi)容,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。 具體操作方式可參考此處。如您有任何疑問(wèn)或者授權(quán)方面的協(xié)商,請(qǐng)給我留言。

            常用鏈接

            留言簿(8)

            隨筆檔案

            文章檔案

            搜索

            •  

            積分與排名

            • 積分 - 179049
            • 排名 - 147

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            接著上一篇: 隨機(jī)化算法(1) — 隨機(jī)數(shù)

            在這章開(kāi)篇推薦下chinazhangjie總結(jié)的隨機(jī)算法,因?yàn)樵蹆煽吹氖峭槐緯源蠹乙部梢匀⒖枷滤模偨Y(jié)的很不錯(cuò)。

            http://www.cnblogs.com/chinazhangjie/archive/2010/11/11/1874924.html

            (順便再PS一下,小杰也是我論壇的C/C++問(wèn)題求助板塊的版主,C/C++小牛)

            這一章我就把書中的一個(gè)例子舉出來(lái)了,感覺(jué)雖然很簡(jiǎn)單,但是很有意思。

            用隨機(jī)投點(diǎn)法計(jì)算Pi值

            設(shè)有一半徑為r的圓及其外切四邊形。向該正方形隨機(jī)地投擲n個(gè)點(diǎn)。設(shè)落入圓內(nèi)的點(diǎn)數(shù)為k。由于所投入的點(diǎn)在正方形上均勻分布,因而所投入的點(diǎn)落入圓內(nèi)的概率為(Pi*r*r)/(4*r*r)= Pi/4 。所以當(dāng)n足夠大時(shí),k與n之比就逼近這一概率。從而,PI 約等于 (4*k)/n.

            如下圖:

             

             因?yàn)榇a里用到了上一章《概率算法(1) — 隨機(jī)數(shù)》里的RandomNumber類,所以大家可以先把前一章看看。

            我把這個(gè)偽隨機(jī)類再貼一遍:

             const unsigned long maxshort = 65535L;

            const unsigned long multiplier = 1194211693L;
            const unsigned long adder = 12345L;
             
            class RandomNumber{
            private:
                
            // 當(dāng)前種子
                unsigned long randSeed;
            public:
                
            // 構(gòu)造函數(shù),默認(rèn)值0表示由系統(tǒng)自動(dòng)產(chǎn)生種子
                RandomNumber(unsigned long s = 0);
                
            // 產(chǎn)生0 ~ n-1之間的隨機(jī)整數(shù)
                unsigned short Random(unsigned long n);
                
            // 產(chǎn)生[0, 1) 之間的隨機(jī)實(shí)數(shù)
                double fRandom();
            };
             
            // 產(chǎn)生種子
            RandomNumber::RandomNumber(unsigned long s)
            {
                
            if(s == 0)
                    randSeed 
            = time(0);    //用系統(tǒng)時(shí)間產(chǎn)生種子
                else
                    randSeed 
            = s;
            }
             
            // 產(chǎn)生0 ~ n-1 之間的隨機(jī)整數(shù)
            unsigned short RandomNumber::Random(unsigned long n)
            {
                randSeed 
            = multiplier * randSeed + adder;
                
            return (unsigned short)((randSeed >> 16% n);
            }
             
            // 產(chǎn)生[0, 1)之間的隨機(jī)實(shí)數(shù)
            double RandomNumber::fRandom()
            {
                
            return Random(maxshort) / double(maxshort);
            }

             主文件Main:

            /*
            * Author: Tanky woo
            * Blog:   www.WuTianQi.com
            * Date:   2010.12.8
            * 用隨機(jī)投點(diǎn)法計(jì)算Pi值
            * 代碼來(lái)至王曉東《計(jì)算機(jī)算法設(shè)計(jì)與分析》
            */
             
            #include 
            "RandomNumber.h"
            #include 
            <iostream>
            #include 
            <iomanip>
            #include 
            <time.h>
            using namespace std;
             
            double Darts(long n)
            {
                
            // 用隨機(jī)投點(diǎn)法計(jì)算Pi值
                static RandomNumber dart;
                
            long k = 0;
                
            for(long i=1; i<=n; ++i)
                {
                    
            double x = dart.fRandom();
                    
            double y = dart.fRandom();
                    
            // 在圓內(nèi)
                    if((x*x+y*y) <= 1)
                        
            ++k;
                }
                
            return 4 * k / double(n);
            }
             
            int main()
            {
                
            // 當(dāng)進(jìn)行1,000次投點(diǎn)時(shí)
                cout << Darts(1000<< endl;
                
            // 當(dāng)進(jìn)行10,000次投點(diǎn)時(shí)
                cout << Darts(10000<< endl;
                
            // 當(dāng)進(jìn)行100,000次投點(diǎn)時(shí)
                cout << Darts(100000<< endl;
                
            // 當(dāng)進(jìn)行1,000,000次投點(diǎn)時(shí)
                cout << Darts(1000000<< endl;
                
            // 當(dāng)進(jìn)行10,000,000次投點(diǎn)時(shí)
                cout << Darts(10000000<< endl;
                
            // 當(dāng)進(jìn)行100,000,000次投點(diǎn)時(shí)
                cout << Darts(100000000<< endl;
                
            return 0;
             
            }

             

             通過(guò)代碼可以看出,隨機(jī)投點(diǎn)越多,則越接近與3.1415926…

            這個(gè)和拋硬幣時(shí)求硬幣正反面概率類似,實(shí)驗(yàn)次數(shù)越多,則越接近于理論值。

            下一章是《隨機(jī)化算法(3) — 舍伍德(Sherwood)算法》

            Tanky Woo原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)附上鏈接,請(qǐng)不要私自刪除文章內(nèi)任何關(guān)于本博客的鏈接。

            posted on 2010-12-12 11:51 Tanky Woo 閱讀(2475) 評(píng)論(1)  編輯 收藏 引用

            FeedBack:
            # re: 隨機(jī)化算法(2) — 數(shù)值概率算法 2010-12-16 08:37 tiny
            goodjob  回復(fù)  更多評(píng)論
              

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


            日本人妻丰满熟妇久久久久久| 久久这里只精品国产99热| 99久久精品费精品国产一区二区 | 亚洲精品高清国产一线久久| 无码任你躁久久久久久老妇| 精品久久久久久国产牛牛app| 中文字幕一区二区三区久久网站| 狠狠色丁香婷婷久久综合不卡| 成人妇女免费播放久久久| 久久偷看各类wc女厕嘘嘘| 久久精品蜜芽亚洲国产AV| 久久99久久99精品免视看动漫| 亚洲精品白浆高清久久久久久| 欧美喷潮久久久XXXXx| 日日噜噜夜夜狠狠久久丁香五月| 亚洲精品无码久久千人斩| 久久综合88熟人妻| 亚洲成色999久久网站| 久久久久人妻一区精品 | 国产精品综合久久第一页| 国产精品99久久久久久董美香| 久久精品国产99久久久香蕉| 亚洲综合久久久| 久久久久久久97| 四虎国产精品免费久久久 | 久久久精品视频免费观看| 亚洲精品成人网久久久久久| 欧美亚洲色综久久精品国产| 国产精品久久久福利| 久久久久国产一级毛片高清板| 中文无码久久精品| 亚洲国产精品久久久久婷婷软件| 色99久久久久高潮综合影院| 色婷婷综合久久久中文字幕| 国产成人香蕉久久久久| 婷婷五月深深久久精品| 久久996热精品xxxx| 日韩av无码久久精品免费| 久久久久久久国产免费看| 无码精品久久久天天影视| 精品视频久久久久|