亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺析C++語言中的隨機(jī)數(shù)的應(yīng)用

        2017-06-01 23:57:46孫靈杰趙曉東方歡
        電腦知識(shí)與技術(shù) 2017年8期
        關(guān)鍵詞:種子

        孫靈杰 趙曉東 方歡

        摘要:該文針對(duì)C++語言中的隨機(jī)數(shù)生成以及使用方法進(jìn)行分析和探討,主要對(duì)各種隨機(jī)數(shù)的生成算法進(jìn)行設(shè)計(jì)。在C++中,隨機(jī)數(shù)的生成主要通過函數(shù)文件中的ramt()和srand()函數(shù)。首先,闡述rarut()和srand()兩種函數(shù)共同的使用方法和模式,并分析了各自的缺點(diǎn),然后以現(xiàn)實(shí)中的問題和實(shí)際的題目為例,通過實(shí)際編程來闡釋隨機(jī)數(shù)生成函數(shù)的使用方法,實(shí)現(xiàn)了不同概率的隨機(jī)數(shù)的產(chǎn)生、不連續(xù)的隨機(jī)數(shù)的產(chǎn)生等方法。

        關(guān)鍵詞:隨機(jī)數(shù);偽隨機(jī)數(shù);種子;隨機(jī)數(shù)生成器

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)08-0098-03

        1概述

        經(jīng)過對(duì)C++語言的學(xué)習(xí),筆者發(fā)現(xiàn)書中對(duì)于隨機(jī)函數(shù)的使用只是一概而過,沒有進(jìn)行深入的闡釋和聯(lián)想。文獻(xiàn)是到“其實(shí)計(jì)算機(jī)不會(huì)產(chǎn)生絕對(duì)隨機(jī)的隨機(jī)數(shù),只能產(chǎn)生“偽隨機(jī)數(shù)”。其實(shí)絕對(duì)隨機(jī)的隨機(jī)數(shù)只是一種理想的隨機(jī)數(shù),計(jì)算機(jī)只能生成相對(duì)的隨機(jī)數(shù),即偽隨機(jī)數(shù)。實(shí)際上,系統(tǒng)是將0~32767之間的整數(shù)“隨意”地排成了一個(gè)“隨機(jī)數(shù)表”,程序第一次調(diào)用rand()函數(shù)是取“隨機(jī)數(shù)表”中的第一個(gè),第二次調(diào)用rand()函數(shù)是取“隨機(jī)數(shù)表”的第二個(gè),由此類推。即使我們運(yùn)行了多次,但都是在同一個(gè)系統(tǒng)上,而同一個(gè)系統(tǒng)產(chǎn)生的“隨機(jī)數(shù)表”又始終是相同的,因此每一次運(yùn)行的結(jié)果都是一樣的?!爆F(xiàn)有文獻(xiàn)大都集中在介紹隨機(jī)函數(shù)的用法,本文從實(shí)際應(yīng)用出發(fā),分析和研究各種不同類型隨機(jī)數(shù)的生成算法,并進(jìn)行實(shí)驗(yàn)分析。

        2隨機(jī)數(shù)的生成的原理(C++框架下)

        2.1C++中隨機(jī)數(shù)的定義

        C++語言中使用cstdlib中的函數(shù)rand()進(jìn)行生成,但生成的只是偽隨機(jī)數(shù)。因?yàn)閞and()的內(nèi)部實(shí)現(xiàn)是用線性同余法做成的,生成隨機(jī)數(shù)時(shí),需要指定一個(gè)種子,用srand()來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子,如果每次srand()都設(shè)相同值,rand()所產(chǎn)生的隨機(jī)數(shù)值每次就會(huì)一樣。通??梢岳胻ime(0)的返回值或NULL來當(dāng)做seed,這樣可以輸出不同的隨機(jī)數(shù)。

        2.2隨機(jī)數(shù)隨機(jī)重現(xiàn)試驗(yàn)

        線性同余法產(chǎn)生對(duì)隨機(jī)數(shù)是偽隨機(jī)數(shù),下面進(jìn)行試驗(yàn),測試具體偽隨機(jī)數(shù)的特點(diǎn)。

        通過圖1的實(shí)驗(yàn)結(jié)果,可以發(fā)現(xiàn)當(dāng)給予相同的隨機(jī)數(shù)函數(shù)種子時(shí),他會(huì)輸出相同的數(shù)字,這就是“偽隨機(jī)數(shù)”名字的來歷。為了設(shè)計(jì)出不同的隨機(jī)函數(shù),C++引入函數(shù)time(0)(電腦上確切的時(shí)間),用time(0)作為種子,可以實(shí)現(xiàn)隨機(jī)數(shù)函數(shù)每次的種子都不同,從而產(chǎn)生出不同的隨機(jī)數(shù),讓數(shù)字的產(chǎn)生更加接近隨機(jī)。

        2.3驗(yàn)證偽隨機(jī)數(shù)是否足夠隨機(jī)的實(shí)驗(yàn)

        通過圖2,由此看出0-9的各個(gè)數(shù)字,當(dāng)隨機(jī)數(shù)數(shù)量足夠多時(shí),產(chǎn)生概率是近似相同的,因此Fang()函數(shù)產(chǎn)生的偽隨機(jī)數(shù)是可以近似看作隨機(jī)數(shù)的。

        3隨機(jī)數(shù)常見的使用方法

        3.1隨機(jī)數(shù)小數(shù)(不考慮進(jìn)位)的產(chǎn)生

        隨機(jī)數(shù)產(chǎn)生器rand()是根據(jù)其后%n中的n來確定產(chǎn)生的數(shù)字的,會(huì)產(chǎn)生出所有小于n的整形數(shù)字(包括0),由于c++語言中%(取余函數(shù))只能輸出整數(shù),所以隨機(jī)小數(shù)是不能直接產(chǎn)生的,必須運(yùn)用其他方式。

        從圖3可以看出,雖然rand()函數(shù)只能輸出整數(shù),但通過除法運(yùn)算,可以輸出小數(shù),再加上整數(shù)就可以輸出具有大于1的隨機(jī)小數(shù),通過實(shí)驗(yàn)結(jié)果可以證明算法的正確性。

        3.2隨機(jī)數(shù)小數(shù)(考慮進(jìn)位)的產(chǎn)生

        通過對(duì)rand()函數(shù)產(chǎn)生數(shù)據(jù)的數(shù)字類型變換從而為浮點(diǎn)數(shù)創(chuàng)造了可能,/10可以制造出一位小數(shù),/100可以制造出兩位小數(shù),如果想隨機(jī)輸出3-5之間的小數(shù)只需要將%n中的n改為大于10的數(shù)字,通過小數(shù)點(diǎn)進(jìn)位的方式來進(jìn)行。例如:

        圖4這為小數(shù)隨機(jī)數(shù)(跨位數(shù))的生成算法。

        分析:關(guān)于進(jìn)位,可以看做是大于1的小數(shù)和整數(shù)的相加,通過rand()隨機(jī)輸出0-20的隨機(jī)數(shù),除以10后,便成為隨機(jī)輸出0.0-2.0之間的隨機(jī)小數(shù),加上3后成為隨機(jī)輸出3.0-5.0之間的隨機(jī)數(shù),根據(jù)實(shí)驗(yàn)結(jié)果,這種算法正確。

        3.3任意數(shù)的隨機(jī)輸出

        C++中rand()只能通過取余函數(shù)來進(jìn)行模擬,如果要隨機(jī)出特定的隨機(jī)數(shù),譬如1、4、5、9這四個(gè)隨機(jī)數(shù),我們可以通過if來進(jìn)行篩選。

        分析:隨機(jī)數(shù)只能連續(xù)輸出,如果要輸出特定的數(shù)字只能依靠if判斷語句,進(jìn)行隨機(jī)數(shù)的篩選,如果是特定的數(shù)字就輸出,不是就繼續(xù)隨機(jī)輸出下一個(gè)數(shù)字。通過圖實(shí)驗(yàn)結(jié)果證明這種算法正確。

        3.4不同比例隨機(jī)數(shù)輸出

        在實(shí)際生活中隨機(jī)數(shù)的輸出概率并不均等,那么依靠c++語言中,運(yùn)用rand()函數(shù)仍可以進(jìn)行輸出,例如0、1、2、3、4、5、6這些數(shù)字,而0、1、2、3這三個(gè)數(shù)字比其他數(shù)字更容易輸出50%。

        分析:第一個(gè)for循環(huán)按等比例輸出隨機(jī)數(shù),第二個(gè)for循環(huán)通過再次隨機(jī)輸出特定相同數(shù)字相同的次數(shù),通過判斷語句,只打印比例多出來的數(shù)字,從而使特定數(shù)字多出50%的概率輸出,通過實(shí)驗(yàn)結(jié)果,得出這種算法是正確的。

        3.5任意0、1串的輸出

        在實(shí)際編程操作中,很多時(shí)候都要運(yùn)用0、1串的輸出。

        分析:運(yùn)用for()循環(huán)進(jìn)行具體次數(shù)的輸出使字符串的輸出更加方便。

        4小結(jié)

        我們?cè)谏钪幸矔?huì)遇到很多有關(guān)隨機(jī)數(shù)的問題,如隨機(jī)抽獎(jiǎng),隨機(jī)點(diǎn)名等等。本文介紹了c++中隨機(jī)數(shù)的使用以及產(chǎn)生帶小數(shù)的隨機(jī)數(shù),進(jìn)位的隨機(jī)小數(shù),隨機(jī)輸出不連續(xù)的數(shù)字,輸出不同概率的隨機(jī)數(shù)以及一種可以解微積分的方法,對(duì)一些實(shí)例進(jìn)行了較為詳細(xì)的解釋,并對(duì)結(jié)果進(jìn)行了分析,有助于更好的使用隨機(jī)數(shù)函數(shù),為現(xiàn)實(shí)生活中解決隨機(jī)數(shù)函數(shù)問題打下現(xiàn)實(shí)基礎(chǔ)。

        猜你喜歡
        種子
        金種子的果實(shí)
        支點(diǎn)(2022年8期)2022-08-04 10:31:10
        海的種子
        種子的歸處
        海峽姐妹(2020年8期)2020-08-25 09:30:22
        假如我是一顆種子
        桃種子
        幸運(yùn)的小種子
        幼兒園(2018年15期)2018-10-15 19:40:36
        可憐的種子
        莫愁(2017年21期)2017-07-18 12:05:38
        可憐的種子
        最小的種子
        種子都長在果實(shí)里嗎
        99精品国产一区二区三区a片| 久久久精品久久久国产| av天堂手机在线看片资源| 中文字幕一区二区精品视频| 色综合久久久久综合99| 国精无码欧精品亚洲一区| 国产在线观看黄| 国产一区二区精品久久呦| 黄色影院不卡一区二区| 亚洲精品国产成人片| 草草久久久无码国产专区| 亚洲成人免费无码| 特级婬片国产高清视频| 亚洲无码a∨在线视频| 日本看片一区二区三区| 国产情侣亚洲自拍第一页| 中国美女a级毛片| 一本大道久久东京热无码av| 91精品国产综合久久青草| 精品奇米国产一区二区三区 | 最近中文字幕一区二区三区| 亚洲国产丝袜久久久精品一区二区| 五月四房播播| 亚洲一区二区三区成人网站| 国产精品伦人视频免费看| 亚洲av色精品国产一区二区三区| 国产人成精品免费久久久| 国产成人亚洲综合| 国产熟人av一二三区| 97久久久久国产精品嫩草影院| 青青草绿色华人播放在线视频| 国产偷国产偷亚洲高清视频| 色综合久久88色综合天天| 日本亚洲欧美在线观看| 日本看片一区二区三区| 美利坚日韩av手机在线| 精品久久香蕉国产线看观看亚洲| 国产精品亚洲专区无码web| 日韩一区二区三区天堂| 亚洲人不卡另类日韩精品| 欧美性猛交xxxx富婆|