• <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>
            voip
            風(fēng)的方向
            厚德致遠(yuǎn),博學(xué)敦行!
            posts - 52,comments - 21,trackbacks - 0
                        學(xué)以致用!!!
                        隨機(jī)數(shù)可以用來(lái)計(jì)算概率,面積等!!
                     一、隨機(jī)數(shù),模擬拋硬幣正面時(shí)間頻率圖。
                     代碼如下:
            #include<iostream>
            #include
            <time.h>
            using namespace std;
            const unsigned long maxshort=65536L;
            const unsigned long multiplier=1194211693L;
            const unsigned long adder=12345L;

            class RandomNumber
            {
            private:
                unsigned 
            long randSeed;                    //隨機(jī)種子
            public:
                RandomNumber(unsigned 
            long s=0);            //構(gòu)造函數(shù),為randSeed置數(shù)
                unsigned short Random(unsigned long n);        //獲取0~n的一個(gè)隨機(jī)數(shù)
                double fRandom(void);                        //獲取一個(gè)小數(shù)
            }
            ;

            RandomNumber::RandomNumber(unsigned 
            long s)        
            {
                
            if(s==0
                    randSeed
            =time(0);                        //這里獲取直接用time函數(shù)獲取了一個(gè)時(shí)間值當(dāng)做種子了,沒(méi)有再用srand函數(shù)構(gòu)造種子了!網(wǎng)上查了下time()函數(shù)為從1970年1月1日0時(shí)0分0秒到此時(shí)的秒數(shù)!!!
                else
                    randSeed
            =s;                    
            }


            unsigned 
            short RandomNumber::Random(unsigned long n)
            {
            //    printf("randSeed:%lu \nmultiplier:%lu  \nrandSeed*multiplier:%lu\n",randSeed,multiplier,randSeed*multiplier);
                randSeed=multiplier*randSeed+adder;            //這里存在一個(gè)越界問(wèn)題,但是還是會(huì)從新獲得一個(gè)randSeed
            //    printf("(randSeed>>16):%lu\n",randSeed>>16);
                return (unsigned short)((randSeed>>16)%n);        //右移16為再與n取余,從而獲得一個(gè)0~n的隨機(jī)數(shù),其實(shí)我還不明白,為啥還要右移呢?難道是為了隨機(jī)性?
            }


            double RandomNumber::fRandom(void)
            {
                
            return Random(maxshort)/double(maxshort);     
            }


            int TossCoins(int numberCoins)
            {
                
            static RandomNumber coinToss;        //注意了這里定義了一個(gè)靜態(tài)變量,在函數(shù)反復(fù)調(diào)用中coinToss的屬性值不變,從構(gòu)造函數(shù)的角度來(lái)理解,在函數(shù)反復(fù)調(diào)用過(guò)程中,該對(duì)象是不會(huì)重新去構(gòu)造的(不會(huì)重復(fù)調(diào)用構(gòu)造函數(shù)的)!
                int i,tosses=0;
                
            for(i=0;i<numberCoins;i++)            //這里調(diào)用Random函數(shù)!!
                {
                    tosses
            +=coinToss.Random(2);        //返回0或1,1表示正面,0表示反面,累計(jì)正面朝上的次數(shù)
                }

                
            return tosses;                        //返回正面朝上的次數(shù)
            }

            void main()
            {
                
            const int NCOINS=10;                //定義了常量,我從一些牛人哪里看到,我們應(yīng)該把靜態(tài)變量看成只讀。。。
                const long NTOSSES=50000L;        
                
            long i,heads[NCOINS+1];                //h[i]代表NTOSSES次拋NCOINS次拋硬幣中i次正面次數(shù),貌似有些拗口,按這個(gè)實(shí)例來(lái)說(shuō),應(yīng)該是做50000次拋10次硬幣,然后統(tǒng)計(jì)10次中出現(xiàn)0次正面朝上次數(shù),1次正面朝上次數(shù),。。10次正面朝上次數(shù)
                int j,position;

                
            for(j=0;j<NCOINS+1;j++)
                    heads[j]
            =0;

                
            for(i=0;i<NTOSSES;i++)                //累計(jì)
                    heads[TossCoins(NCOINS)]++;

                cout
            <<"head結(jié)果:";
                
            for(i=0;i<=NCOINS;i++)                //輸出h結(jié)果
                {
                    cout
            <<heads[i]<<" ";
                }


                cout
            <<endl;

                
            for(i=0;i<=NCOINS;i++)            //模擬拋硬幣正面事件平率圖
                {
                    position
            =int (float(heads[i])/NTOSSES*100);//這里有強(qiáng)制類型轉(zhuǎn)換,其實(shí)這里計(jì)算了概率,通過(guò)強(qiáng)制類型轉(zhuǎn)換成整數(shù)!!!
                    cout<<i<<" ";

                    
            for(j=0;j<position-1;j++)            //輸出空格
                        cout<<" ";
                    cout
            <<"*"<<endl;
                }

            }

            運(yùn)行結(jié)果如下:
             
                     二、隨機(jī)數(shù),計(jì)算∏。基本思想也是運(yùn)用了概率事件!設(shè)有一個(gè)半徑為r的圓及其外切四邊形,向該圖形投擲N個(gè)點(diǎn)。設(shè)落入圓內(nèi)的點(diǎn)數(shù)為K,由于投入的點(diǎn)在正方形上分布均勻,所以落入圓中的概率為∏*R^2/4/R^2,從投點(diǎn)的角度考慮,該概率為K/N,當(dāng)N足夠大時(shí),我們可以近似的認(rèn)為二者相等。從而∏=4*K/N。
            代碼如下:
            double Darts(int n)
            {
                
            static RandomNumber dart;
                
            int k=0;
                
            for(int i=1;i<=n;i++)
                
            {
                    
            double  x=dart.fRandom();
                    
            double  y=dart.fRandom();
                    
            if((x*x+y*y)<=1)
                        k
            ++;
                }

                
            return 4*k/double(n);
            }

            當(dāng)n=500000000時(shí),運(yùn)行結(jié)果如下:
             

            printf輸出:http://hi.baidu.com/jiaju111/blog/item/dcd7fd8ba9a7fa1ac9fc7ae2.html

            C語(yǔ)言時(shí)間日期函數(shù)說(shuō)明:http://www.cnblogs.com/neonlight/archive/2008/08/22/1273942.html
            posted on 2010-09-13 15:51 jince 閱讀(647) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 算法設(shè)計(jì)與分析
            哈哈哈哈哈哈
            久久综合伊人77777麻豆| 女人香蕉久久**毛片精品| 三级韩国一区久久二区综合| 麻豆久久| 亚洲国产另类久久久精品黑人| 综合网日日天干夜夜久久| 欧美一区二区三区久久综合| 高清免费久久午夜精品| 久久精品亚洲乱码伦伦中文| 欧美熟妇另类久久久久久不卡| 99久久成人国产精品免费| 久久久人妻精品无码一区| 久久婷婷成人综合色综合| 久久久久无码精品国产app| 99精品久久久久久久婷婷| 久久最近最新中文字幕大全| 一本一本久久a久久精品综合麻豆| 国产亚洲精品自在久久| 久久久久久久免费视频| 亚洲欧美日韩精品久久| 久久w5ww成w人免费| 亚洲欧美日韩久久精品| 伊人久久综合热线大杳蕉下载| 久久精品国产亚洲AV影院| 久久精品不卡| 久久久精品一区二区三区| 亚洲va久久久噜噜噜久久天堂| 久久婷婷五月综合成人D啪 | 久久久这里只有精品加勒比| 久久精品视频网| 久久精品国产亚洲AV无码娇色| 久久99热这里只有精品66| 久久99精品九九九久久婷婷| 999久久久无码国产精品| 色欲综合久久中文字幕网| 狠狠色综合网站久久久久久久高清| 国产亚州精品女人久久久久久 | 久久精品中文字幕第23页| 久久青青草原综合伊人| 国产91色综合久久免费| 国产精品美女久久久久网|