• <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)制類(lèi)型轉(zhuǎn)換,其實(shí)這里計(jì)算了概率,通過(guò)強(qiáng)制類(lèi)型轉(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 閱讀(656) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 算法設(shè)計(jì)與分析
            哈哈哈哈哈哈
            大香伊人久久精品一区二区| 奇米综合四色77777久久| 青青草原综合久久| 久久九九久精品国产免费直播| 99久久99久久精品国产| 欧美色综合久久久久久| 国产午夜福利精品久久2021| 久久男人AV资源网站| 久久久久久亚洲AV无码专区| 欧美久久久久久精选9999| 久久久久久九九99精品| 无码人妻少妇久久中文字幕| 999久久久无码国产精品| 久久亚洲日韩看片无码| 国产成人综合久久精品尤物| 久久精品人人槡人妻人人玩AV| 久久精品中文字幕第23页| 九九99精品久久久久久| 国产69精品久久久久APP下载| 久久久久久一区国产精品| 国产精品久久久久久久久免费 | 久久亚洲精品国产亚洲老地址| 久久久久亚洲av无码专区喷水| 精品国产99久久久久久麻豆| 久久久久免费视频| 亚洲人成无码网站久久99热国产| 国产精品久久久久一区二区三区 | 亚洲精品无码专区久久同性男| 国内精品伊人久久久久| 久久久噜噜噜久久熟女AA片| 亚洲综合伊人久久综合| 久久人爽人人爽人人片AV| 日韩精品久久久久久免费| 亚洲精品乱码久久久久久久久久久久 | 国产精品国色综合久久| 人妻久久久一区二区三区| 亚洲伊人久久精品影院| 亚洲国产精品无码久久98| 婷婷综合久久中文字幕蜜桃三电影| 久久无码中文字幕东京热| 日本强好片久久久久久AAA|