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

        ?

        基于Python技術(shù)的自然圖像隨機(jī)數(shù)生成設(shè)計(jì)

        2017-11-02 02:24:48張明浩王虹宇張毅寧
        電腦與電信 2017年8期
        關(guān)鍵詞:那契蒙特卡洛鞍山

        張明浩 王虹宇 張毅寧

        (鞍山師范學(xué)院物理科學(xué)與技術(shù)學(xué)院,遼寧 鞍山 114007)

        基于Python技術(shù)的自然圖像隨機(jī)數(shù)生成設(shè)計(jì)

        張明浩 王虹宇 張毅寧

        (鞍山師范學(xué)院物理科學(xué)與技術(shù)學(xué)院,遼寧 鞍山 114007)

        根據(jù)隨機(jī)數(shù)驗(yàn)證圖形散亂無(wú)序這一特征,反演隨機(jī)數(shù)列。大自然中有許多景象,我們從中隨機(jī)提取一幅或多幅圖像。利用Python語(yǔ)言,通過(guò)高斯模糊將黑白圖像的黑白點(diǎn)均勻化,利用斐波那契數(shù)列多次提取等方法,得到一組或多組隨機(jī)數(shù),最后經(jīng)過(guò)蒙特卡洛π驗(yàn)證,證明這組數(shù)是隨機(jī)數(shù)。

        斐波那契數(shù)列;蒙特卡洛驗(yàn)證;高斯模糊;隨機(jī)數(shù);Python

        1 有關(guān)隨機(jī)數(shù)的基本問(wèn)題

        1.1 隨機(jī)數(shù)表需要的理由

        目前,數(shù)學(xué)對(duì)隨機(jī)數(shù)(或隨機(jī)序列)仍然沒(méi)有統(tǒng)一定義。真隨機(jī)數(shù)性質(zhì)的一般描述是在隨機(jī)序列無(wú)限長(zhǎng)的情況下具有如下性質(zhì):

        (1)均勻分布:一串真隨機(jī)序列滿足均勻分布的統(tǒng)計(jì)特性,如序列的每一位是0或1的概率相等,都為0.5。

        (2)不可預(yù)測(cè)性:真隨機(jī)序列的每一位是相互獨(dú)立的,給定序列某一位的值,并不能預(yù)測(cè)或計(jì)算出后一位的值。

        基于數(shù)學(xué)算法的偽隨機(jī)數(shù)發(fā)生器實(shí)際上可以產(chǎn)生近似于均勻分布隨機(jī)序列。現(xiàn)代計(jì)算機(jī)算法已經(jīng)可以產(chǎn)生足夠好的偽隨機(jī)數(shù),其周期性已經(jīng)不再是關(guān)鍵問(wèn)題,但是與真隨機(jī)數(shù)相比最大的區(qū)別在于可否對(duì)下次結(jié)果進(jìn)行預(yù)測(cè)。很明顯偽隨機(jī)數(shù)雖然快捷,但是對(duì)于同樣的種子,產(chǎn)生的隨機(jī)序列將會(huì)是相同的,顯然不具有不可預(yù)測(cè)性[1]。

        1.2 常見(jiàn)隨機(jī)數(shù)生成方法

        常用的產(chǎn)生偽隨機(jī)數(shù)的數(shù)學(xué)算法有線性同余發(fā)生器(linear congruential generator),延遲斐波那契發(fā)生器(lagged Fibonacci generator)和線性反饋移位寄存器(linear feedback shift register)等[2]。

        除了基于確定數(shù)學(xué)算法的偽隨機(jī)數(shù)發(fā)生器,還有一類(lèi)是物理偽隨機(jī)數(shù)發(fā)生器,產(chǎn)生的隨機(jī)數(shù)是來(lái)源于客觀的物理過(guò)程,但客觀的物理過(guò)程并不意味著真隨機(jī)。相對(duì)于數(shù)學(xué)算法,物理偽隨機(jī)數(shù)發(fā)生器的隨機(jī)性兩大特點(diǎn):

        一是理論上準(zhǔn)確地描述很多實(shí)際的物理過(guò)程非常困難和復(fù)雜,即便是掌握了物理系統(tǒng)的初值和運(yùn)行規(guī)律,也很難精確地計(jì)算出這些物理過(guò)程將來(lái)的狀態(tài)。

        二是周?chē)h(huán)境對(duì)于物理系統(tǒng)的運(yùn)行產(chǎn)生影響,比如兩個(gè)相同的器件由于溫度或電壓等條件的影響,系統(tǒng)開(kāi)始運(yùn)行的初值可能不同,這也導(dǎo)致了預(yù)測(cè)的困難。

        由于本質(zhì)上很多物理過(guò)程并不是真隨機(jī)的,理論上并不滿足不可預(yù)測(cè)性的要求。所以產(chǎn)生的隨機(jī)數(shù)為偽隨機(jī)數(shù)。其研究設(shè)計(jì)過(guò)程一般是先選取一個(gè)物理世界的真隨機(jī)源,然后選用特定的方法從中提取真隨機(jī)數(shù)。物理真隨機(jī)數(shù)發(fā)生器具有真正的隨機(jī)性和不可預(yù)知性,其采樣的真實(shí)物理現(xiàn)象有多種[3],如:放射性衰變,電子電路噪聲,大氣噪聲,電子振蕩器的頻率抖動(dòng),激光混沌,光子相位噪聲,光量子的偏振等。

        1.3 常用隨機(jī)數(shù)基本檢驗(yàn)方法

        常用的基本檢驗(yàn)方法有:頻數(shù)檢驗(yàn),序列檢驗(yàn),撲克檢驗(yàn),游程檢驗(yàn)和自相關(guān)檢驗(yàn)等,但目前并不存在真正意義上的真隨機(jī)性的檢測(cè)方法,這是因?yàn)檎骐S機(jī)性是基于無(wú)限長(zhǎng)序列的,所以數(shù)學(xué)統(tǒng)計(jì)上的檢測(cè)是無(wú)法完成的。目前工業(yè)上常用的統(tǒng)計(jì)檢測(cè)一般是基于固定長(zhǎng)度隨機(jī)序列的(一般是1 Gbit),如 ENT(pseudo-random number sequence test program),NIST-STS(a statistical test suite for the validation of random number generators and pseudo random number generators for cryptographic applications),Diehard(a battery of tests of randomness)等[4]。其中ENT檢驗(yàn)為國(guó)際上通用的隨機(jī)數(shù)檢測(cè)程序,將給出產(chǎn)生的隨機(jī)序列的數(shù)學(xué)平均值,每比特熵值,χ檢測(cè)值,Monte Carlo方法計(jì)算得到的π值,以及序列相關(guān)系數(shù)。

        2 基于Python技術(shù)的自然圖像隨機(jī)數(shù)生成的過(guò)程

        2.1 設(shè)計(jì)思路及原理說(shuō)明

        首先,從自然界中提取一幅或多幅圖像,可以假定一般情況下,這一圖像不具有規(guī)律重復(fù)特征,然后將其轉(zhuǎn)化為黑白圖像;轉(zhuǎn)化過(guò)程中,利用高斯模糊將黑白圖像中的黑白點(diǎn)均勻化,進(jìn)而轉(zhuǎn)化成0-1序列;再將其轉(zhuǎn)化為一個(gè)大十進(jìn)制數(shù),其后再?gòu)倪@個(gè)十進(jìn)制中按斐波那契序列提取一定數(shù)量的數(shù)列作為一個(gè)十進(jìn)制數(shù)。依次改變提取起始位,經(jīng)過(guò)循環(huán)多次提取,獲得一組隨機(jī)數(shù)。

        2.2 選擇Python相關(guān)技術(shù)的原因

        Python是一種面向?qū)ο?、支持?dòng)態(tài)語(yǔ)義、內(nèi)置高級(jí)數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法簡(jiǎn)潔優(yōu)美、易于擴(kuò)展的解釋型腳本語(yǔ)言(script language)[5]。OpenCV(Open Source Computer Vision Library)是一個(gè)基于(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在Linux、Windows和Mac OS操作系統(tǒng)上。它具有輕量級(jí)且高效的特點(diǎn)——由一系列C函數(shù)和少量C++類(lèi)構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語(yǔ)言的接口,提供圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法1[6]。因此,我們將二者結(jié)合進(jìn)行圖像處理。

        2.3 圖像的二值處理

        利用OpenCV工具包對(duì)圖像進(jìn)行二值處理十分方便,圖像處理前后如圖1所示,其過(guò)程如下:

        im_gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#用灰度模式打開(kāi)要處理的圖像

        retval,im_at_fixed=cv2.threshold(im_gray,50,255,cv2.THRESH_BINARY)#將50-255之間的灰度值作為圖像轉(zhuǎn)換的閾值

        im_at_gaussian=cv2.adaptiveThreshold(im_gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,7)#對(duì)圖像進(jìn)行高斯模糊,保證0、1值均勻分布

        圖1 像處理前后原圖與灰度圖

        2.4 圖像的數(shù)值轉(zhuǎn)化

        進(jìn)一步將黑白圖像轉(zhuǎn)化成0-1序列,存儲(chǔ)到文件“num.txt”中。

        num=""

        for i in range(img.shape[0]):#對(duì)圖像值的二維數(shù)組進(jìn)行遍歷

        for j in range(img.shape[1]):

        if img[i][j]>100:num+="1"#將高于100灰度值定為1,否則為0

        else:num+="0"

        f=file("num.txt","a")#將10序列轉(zhuǎn)化為字符型存儲(chǔ)到“num.txt”文件中

        f.write(str(int(num,2)))

        2.5 隨機(jī)數(shù)生成

        f=open("num.txt")#打開(kāi)“num.txt”文件

        mystr=f.read()#將“num.txt”文件中的0-1序列讀出

        f.close()

        n=len(mystr)-index[-1]#得到10序列長(zhǎng)度

        index=[1,2,3,5,8,13,21,33,54,87]#斐波那契數(shù)列

        num=[0]*n

        for i in range(n):

        mynum=""

        for j in range(len(index)):

        mynum+=mystr[i+index[j]]#以斐波那契數(shù)列為下標(biāo)獲得一個(gè)數(shù)組成的字符

        num[i]=float(int(mynum)/10000000000.00)#將下標(biāo)獲得的字符變成浮點(diǎn)小數(shù),經(jīng)循環(huán)后變成數(shù)組

        fo=open("newnum.csv","w");fo.write("random, ")#將浮點(diǎn)小數(shù)數(shù)組變成字符存儲(chǔ)到"newnum.csv"文件中

        for i in range(n):fo.write(str(num[i])+","+" ");fo.close()

        3 蒙特卡洛π驗(yàn)證

        蒙特卡羅方法是以概率和統(tǒng)計(jì)理論方法為基礎(chǔ)的計(jì)算方法[7]。認(rèn)為平面系上的一個(gè)邊長(zhǎng)為1的正方形及其內(nèi)部的一個(gè)形狀不規(guī)則的“圖形”,向該正方形“隨機(jī)地”投擲N個(gè)點(diǎn),有M個(gè)點(diǎn)落于“圖形”內(nèi),則該“圖形”的面積近似為M/N。而這個(gè)圖形接近圓,其面積為π。實(shí)現(xiàn)代碼如下:

        import pylab as plt#加載pylab繪圖包

        incount=0;count=100000;x=[];y=[];

        for i in range(count):x.append(num[i]);y.append(num[count+i])#將小數(shù)數(shù)組賦給蒙特卡洛點(diǎn)變量x,y

        if(x[i]**2+y[i]**2)<1:incount+=1#如果x,y對(duì)應(yīng)的點(diǎn)在單位元內(nèi),計(jì)數(shù)加1

        plt.scatter(x,y,s=0.1,edgecolors='none')#匯出點(diǎn)圖

        plt.text(-0,-0.05,"pi="+str(4.0*incount/count))#標(biāo)記蒙特卡洛比值,并和π做比較

        plt.text(-0,-0.10,"count="+str(count));plt.show()

        圖2 蒙特卡洛π驗(yàn)證圖

        4 多次實(shí)驗(yàn)結(jié)果π值統(tǒng)計(jì)

        我們進(jìn)行簡(jiǎn)單隨機(jī)抽樣100次,實(shí)驗(yàn)結(jié)果π值如下:

        圖3 實(shí)驗(yàn)結(jié)果π值統(tǒng)計(jì)圖

        在上述100個(gè)數(shù)據(jù)中,最小值為3.12704,最大值為3.15249,平均值為3.14076,標(biāo)準(zhǔn)誤為0.00557。在圖3中,橫坐標(biāo)的值為實(shí)驗(yàn)數(shù)據(jù)的數(shù)值,縱坐標(biāo)的值為統(tǒng)計(jì)數(shù)量。根據(jù)圖3我們可以得出:左側(cè)的直方圖顯示,這些數(shù)據(jù)圍繞π這一數(shù)值緊密聚類(lèi),大體上呈現(xiàn)正態(tài)分布,處于穩(wěn)定狀態(tài)。中間的概率密度圖顯示,這些數(shù)據(jù)的范圍無(wú)限接近于π值,并且越接近π值,概率越高。右側(cè)的累計(jì)曲線顯示,在π值附近分布的比重最大。根據(jù)上述結(jié)果,我們可以看出,實(shí)際數(shù)值是與理論數(shù)值π值非常接近的,也就代表著我們這個(gè)實(shí)驗(yàn)的準(zhǔn)確性。

        表1 實(shí)驗(yàn)結(jié)果π值

        5 自然圖像隨機(jī)數(shù)生成特點(diǎn)

        自然圖像隨機(jī)數(shù)生成器的設(shè)計(jì)有其他實(shí)驗(yàn)不可比擬的優(yōu)勢(shì):首先,取材方便,一幅自然圖片就可以,甚至可以是一個(gè)人臉照片;其次,生成速度快,利用計(jì)算機(jī)程序直接操作處理,沒(méi)有模數(shù)轉(zhuǎn)換過(guò)程,不受外界變量控制;再則,成本低,幾乎沒(méi)有實(shí)驗(yàn)器材,得到的是優(yōu)于數(shù)學(xué)算法的隨機(jī)數(shù)。最為重要的是個(gè)性化特點(diǎn)明顯,調(diào)整不同的照片,就可以提取不同的序列號(hào),確保唯一性。

        [1]Aj's Blog.科普:什么是隨機(jī)數(shù)[EB/OL].https://www.6zou.net/docs/what_is_random.html.2016-6-10.

        [2]郭弘,劉鈺,黨安紅,等.物理真隨機(jī)數(shù)發(fā)生器[J].科學(xué)通報(bào),2009(23):3651-3657.

        [3]于全福.基于量子效應(yīng)的隨機(jī)數(shù)產(chǎn)生研究[D].北京:北京大學(xué),2013.

        [4]知乎.如何評(píng)價(jià)一個(gè)偽隨機(jī)數(shù)生成算法的優(yōu)劣[EB/OL].https://www.zhihu.com/question/20222653.2016-6-10.

        [5]鐘志強(qiáng).基于Python語(yǔ)言的大學(xué)物理實(shí)驗(yàn)數(shù)據(jù)處理方法研究[J].鞍山師范學(xué)院學(xué)報(bào),2016,18(2):77-81.

        [6]李國(guó)軍.?dāng)?shù)字圖像處理的一種新方法[J].鞍山師范學(xué)院學(xué)報(bào),2016,18(2):69-73.

        [7]百度百科.蒙特卡洛[EB/OL].http://baike.baidu.com.2015-6-10.

        Design of Random Number Generation of Natural Image Based on Python

        Zhang Minghao Wang Hongyu Zhang Yining
        (Anshan Normal University,Anshan 114007,Liaoning)

        Random number has the characteristics of disorder and scatter.Based on this,the random series is retrieved.We can randomly extract images from the nature.This paper uses Gauss fuzzy to homogenize the black points and white points in the binary images with Python language,and uses the Fibonacci sequence for extraction to obtain groups of random numbers.Finally,the Monte Carlo test shows that the number is random.

        Fibonacci sequence;Monte Carlo method;Gauss blur;random number;Python

        TN918.1 文獻(xiàn)識(shí)別碼:A

        1008-6609(2017)08-0013-03

        張明浩(1996-),男,天津人,本科,研究方向?yàn)殡娮有畔⒖茖W(xué)與技術(shù)。

        2016年遼寧省大學(xué)生創(chuàng)新與創(chuàng)業(yè)項(xiàng)目,機(jī)械隨機(jī)數(shù)生成器的設(shè)計(jì)與實(shí)驗(yàn)與真隨機(jī)數(shù)表的生成;編號(hào):201610169025。

        猜你喜歡
        那契蒙特卡洛鞍山
        有趣的斐波那契數(shù)列
        鞍山烈士紀(jì)念館
        征服蒙特卡洛賽道
        從斐波那契數(shù)列的通項(xiàng)公式談起
        等比數(shù)列前n項(xiàng)和(一)教學(xué)紀(jì)實(shí)
        植物體上的斐波那契數(shù)列
        利用控制變量方法縮減蒙特卡洛方差
        疑似斐波那契數(shù)列?
        蒙特卡洛模擬法計(jì)算電動(dòng)汽車(chē)充電負(fù)荷
        基于蒙特卡洛的非線性約束條件下的優(yōu)化算法研究
        国产我不卡在线观看免费| 人妻人人澡人人添人人爽人人玩 | 国产免码va在线观看免费| 日本阿v网站在线观看中文| 国产精品美女AV免费观看| 国产一区二区三区特区| 精品国产yw在线观看| 美女视频黄的全免费视频网站| 久久半精品国产99精品国产| 国产在线播放免费人成视频播放| 日韩精品人妻久久久一二三| 成片免费观看视频大全| 亚洲线精品一区二区三区八戒| 国内国外日产一区二区| 久久精品99国产精品日本| 久久婷婷成人综合色| 亚洲一区二区高清精品| 一个人午夜观看在线中文字幕 | 国产精品永久免费| 色丁香色婷婷| 国产精品成人黄色大片| 精品人妻一区三区蜜桃| 国产xxxx99真实实拍| 自拍亚洲一区欧美另类| 亚洲国产av高清一区二区三区| 欧美大屁股xxxx高潮喷水| av无码久久久久久不卡网站 | 国产精品视频一区二区久久| 久久精品国产字幕高潮| 两个人看的www高清视频中文| 国产亚洲曝欧美不卡精品| 男男亚洲av无一区二区三区久久| 亚洲精品久久久久久久不卡四虎| 99热精品国产三级在线观看| 亚洲精品在线一区二区三区| 在线视频夫妻内射| 性饥渴艳妇性色生活片在线播放| 久久久诱惑一区二区三区| 男女交射视频免费观看网站| 亚洲aⅴ在线无码播放毛片一线天 中国国语毛片免费观看视频 | 热99re久久精品这里都是精品免费|