• <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ù)可以用來計(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)做種子了,沒有再用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è)越界問題,但是還是會(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ù)的角度來理解,在函數(shù)反復(fù)調(diào)用過程中,該對(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í)例來說,應(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ì)算了概率,通過強(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語言時(shí)間日期函數(shù)說明:http://www.cnblogs.com/neonlight/archive/2008/08/22/1273942.html
            posted on 2010-09-13 15:51 jince 閱讀(640) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 算法設(shè)計(jì)與分析
            哈哈哈哈哈哈
            久久人做人爽一区二区三区| 亚洲AV日韩精品久久久久久久| 亚洲人成电影网站久久| 一级做a爰片久久毛片人呢| 久久久久波多野结衣高潮| 久久久久婷婷| 久久综合精品国产二区无码| yy6080久久| 久久人与动人物a级毛片| 97久久国产综合精品女不卡 | 精品综合久久久久久98| 中文字幕精品久久久久人妻| 久久国产精品无| 色综合久久久久综合体桃花网| 无码人妻精品一区二区三区久久| 久久精品aⅴ无码中文字字幕重口| 亚洲精品国产美女久久久| 久久夜色精品国产噜噜麻豆| 精品久久久噜噜噜久久久| 日本久久久精品中文字幕| 久久国产精品无码网站| 久久久久亚洲AV无码观看| 色欲久久久天天天综合网| 久久国产精品国产自线拍免费| 色成年激情久久综合| 天天综合久久一二三区| 久久99国产精一区二区三区| 国产精品99久久久久久宅男| 色偷偷88欧美精品久久久| 狠狠色综合网站久久久久久久高清 | 99久久精品国内| 久久久久亚洲精品男人的天堂| 精品久久久无码人妻中文字幕 | 久久无码专区国产精品发布| 久久久久成人精品无码中文字幕| 999久久久免费国产精品播放| 一本久道久久综合狠狠躁AV| 成人久久综合网| 囯产精品久久久久久久久蜜桃| 国产精品久久久久久久久| 久久人妻少妇嫩草AV蜜桃|