• <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 閱讀(656) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 算法設(shè)計(jì)與分析
            哈哈哈哈哈哈
            香蕉久久av一区二区三区| 久久久无码一区二区三区| 久久久久亚洲av成人无码电影| 欧美精品丝袜久久久中文字幕 | 国内精品久久久久影院日本| 亚洲嫩草影院久久精品| 国产精品中文久久久久久久| 国内精品久久久久久野外| 一级女性全黄久久生活片免费| 91久久精品91久久性色| 久久精品久久久久观看99水蜜桃| 久久婷婷国产麻豆91天堂| 无码国内精品久久人妻蜜桃 | 成人免费网站久久久| 久久亚洲熟女cc98cm| 91精品国产91久久久久久| 欧美黑人激情性久久| 久久精品中文无码资源站| 久久精品18| 久久亚洲精品无码观看不卡| 欧美精品一区二区精品久久 | 久久久久久噜噜精品免费直播| 久久九九亚洲精品| 91久久婷婷国产综合精品青草 | 久久免费99精品国产自在现线| 色偷偷888欧美精品久久久| 久久精品亚洲精品国产色婷| 色综合久久久久久久久五月| 中文字幕热久久久久久久| 麻豆av久久av盛宴av| 欧美伊人久久大香线蕉综合| 波多野结衣久久一区二区| 亚洲国产天堂久久久久久| 久久天天躁狠狠躁夜夜2020一 | 久久久久人妻精品一区| 久久99精品久久久久久动态图| 精品久久久无码人妻中文字幕豆芽| 久久久久人妻一区精品性色av| 久久精品国产精品亚洲毛片| 狠狠狠色丁香婷婷综合久久五月| 久久国产精品一区二区|