日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Ross《随机过程》(第二版)装填问题Python模拟实验

發(fā)布時(shí)間:2023/12/20 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ross《随机过程》(第二版)装填问题Python模拟实验 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

實(shí)驗(yàn)環(huán)境:

python2.7

運(yùn)行時(shí)重定向到輸出文件即可:

python x.py > result.log

我們打算分三種情況模擬:

一,模擬直線末端為孤立點(diǎn)的情況,以P6為例進(jìn)行模擬

二、模擬直線最中間的點(diǎn)為孤立點(diǎn)的情況,以P5,9為例進(jìn)行模擬

三、模擬直線非最中間、非末端的點(diǎn)為孤立點(diǎn)的情況,以P5,10為例進(jìn)行模擬

代碼模擬思想是:

對(duì)于n個(gè)點(diǎn),使用一個(gè)n-1長(zhǎng)度的數(shù)組來(lái)放置n-1個(gè)隨機(jī)數(shù)

數(shù)組中每個(gè)元素初始為-1,表示該數(shù)兩側(cè)的點(diǎn)沒有連接,

后期若該元素為非-1,則表示該數(shù)兩側(cè)的點(diǎn)有連接,成為“相鄰數(shù)對(duì)”

對(duì)于直線兩端的端點(diǎn),必須有“連續(xù)的2個(gè)-1”才表示能繼續(xù)選擇“相鄰數(shù)對(duì)”

對(duì)于直線非兩端的端點(diǎn),必須有“連續(xù)的3個(gè)-1”才表示能繼續(xù)選擇“相鄰數(shù)對(duì)”

每次選擇“相鄰數(shù)對(duì)”后,都要檢查當(dāng)前直線是否還能繼續(xù)放置數(shù)對(duì),

若不能繼續(xù)放置數(shù)對(duì),則跳出while循環(huán),進(jìn)行下一輪實(shí)驗(yàn)。

-----------------------------------------------------------------------------------------------

一、首先模擬Pn(n=6),代碼如下:

#=*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') n=6 a = [-1] * (n-1) #定義一個(gè)長(zhǎng)度為10的list print a # 100個(gè)點(diǎn),來(lái)模擬101個(gè)數(shù),初始化為-1,-1表示該數(shù)左右兩側(cè)沒有連接 #如果最終結(jié)果中有兩個(gè)數(shù)為空(-1),則表示,這兩個(gè)數(shù)之間的點(diǎn)是孤立的。 #如果最終結(jié)果中有一個(gè)數(shù)為空(-1),則表示,這兩個(gè)數(shù)之間沒有點(diǎn)孤立 #如果運(yùn)行過程中存在連續(xù)三個(gè)數(shù)為空(-1),說明該輪隨機(jī)過程還沒結(jié)束,需要繼續(xù)進(jìn)行。 #判斷第i個(gè)點(diǎn)孤立的充分必要條件是:a[i-1]!=-1并且a[i-2]!=-1def print_a(a):#輸出隨機(jī)產(chǎn)生的最終結(jié)果print"\n--------最終產(chǎn)生的點(diǎn)對(duì)----"print"a=",afor index,item in enumerate(a):if index==0 and item!=-1:print"1 - 2",if index==0 and item==-1:print"1 2",if index>0 and item!=-1:print '-',index+2,if index>0 and item==-1:print index+2,print"\n"print"-"*30import random Flag=0#用來(lái)判斷當(dāng)前直線上是否還剩下可以選擇的數(shù)對(duì),0表示不存在,1表示還存在可以選擇的“相鄰數(shù)對(duì)” i_nopairs=n-1#檢驗(yàn)Pn是否為孤立點(diǎn) i_isolated=0#統(tǒng)計(jì)第i個(gè)點(diǎn)最終被孤立的次數(shù) i_pairs=0#統(tǒng)計(jì)第i個(gè)點(diǎn)最終不被孤立的次數(shù) experiment=30000#總實(shí)驗(yàn)次數(shù)for index in range(experiment):print"-----------------------------index=%d-------------------------------"%indexa = [-1] * (n-1)#新的一輪實(shí)驗(yàn)開始,整個(gè)隊(duì)列清零while True:Flag=0point_pairs= random.randrange(0,n-1,1)#產(chǎn)生的隨機(jī)數(shù)∈[0,n-1),共n-1個(gè),下標(biāo)范圍是0~n-2print"point_pairs=",point_pairsif (point_pairs!=n-2 and point_pairs !=0) and point_pairs-a[point_pairs-1]==point_pairs-a[point_pairs+1]==point_pairs+1:#確保左右兩側(cè)都沒有點(diǎn)對(duì),才能落子a[point_pairs]=point_pairsif point_pairs==0 and a[1]==-1:#最左側(cè)的點(diǎn)對(duì),落筆時(shí)需要考慮確保第2個(gè)點(diǎn)和第3個(gè)點(diǎn)沒有連接成對(duì)a[point_pairs]=point_pairsif point_pairs==n-2 and a[n-3]==-1:#最右側(cè)的點(diǎn)對(duì),落筆時(shí)需要考慮確保第2個(gè)點(diǎn)和第個(gè)點(diǎn)沒有連接成對(duì)a[point_pairs]=point_pairsprint"-"*10print a[point_pairs]print"-"*10for i in range(n-3):#檢查整條直線中是否還有可選擇“相鄰數(shù)對(duì)”的余地,如果沒有了,那么本輪實(shí)驗(yàn)結(jié)束if a[i]+a[i+1]+a[i+2]==-3:#············○ a[i] ○ a[i+1] ○ a[i+2] ○············Flag=1breakif a[0]+a[1]==-2 or a[n-3]+a[n-2]==-2:#直線開頭最多只能空兩個(gè)數(shù),表示的含義是○ ○ ○-○······Flag=1break#---------------------------------------if Flag==1:continueif Flag==0:if a[i_nopairs-1]==-1:i_isolated=i_isolated+1print(a)break #------------------------------這里對(duì)Pn進(jìn)行驗(yàn)證----------------------------------------------------------experiment=experiment*1.0 print"i_isolated=",i_isolated print"The ratio of ith point isolated is:",i_isolated/experiments

實(shí)驗(yàn)結(jié)果是:

上述模擬實(shí)驗(yàn)為30000輪,最終第6個(gè)點(diǎn)被孤立的頻率是11007/30000

書上理論計(jì)算P6=11/30

所以理論計(jì)算與實(shí)驗(yàn)結(jié)果十分接近

--------------------------------------------------------------------------------------------------------------

二、接下來(lái)模擬Pi,n(i=5,n=9,這是對(duì)稱情況,i處于最中央),代碼如下:

#=*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') n=9 i_nopairs=5#想孤立第5個(gè)點(diǎn)a = [-1] * (n-1) #定義一個(gè)長(zhǎng)度為10的list print a # 100個(gè)點(diǎn),來(lái)模擬101個(gè)數(shù),初始化為-1,-1表示該數(shù)左右兩側(cè)沒有連接 #如果最終結(jié)果中有兩個(gè)數(shù)為空(-1),則表示,這兩個(gè)數(shù)之間的點(diǎn)是孤立的。 #如果最終結(jié)果中有一個(gè)數(shù)為空(-1),則表示,這兩個(gè)數(shù)之間沒有點(diǎn)孤立 #如果運(yùn)行過程中存在連續(xù)三個(gè)數(shù)為空(-1),說明該輪隨機(jī)過程還沒結(jié)束,需要繼續(xù)進(jìn)行。 #判斷第i個(gè)點(diǎn)孤立的充分必要條件是:a[i-1]!=-1并且a[i-2]!=-1def print_a(a):#輸出隨機(jī)產(chǎn)生的最終結(jié)果print"\n--------最終產(chǎn)生的點(diǎn)對(duì)----"print"a=",afor index,item in enumerate(a):if index==0 and item!=-1:print"1 - 2",if index==0 and item==-1:print"1 2",if index>0 and item!=-1:print '-',index+2,if index>0 and item==-1:print index+2,print"\n"print"-"*30import random Flag=0#用來(lái)判斷當(dāng)前直線上是否還剩下可以選擇的數(shù)對(duì),0表示不存在,1表示還存在可以選擇的“相鄰數(shù)對(duì)”i_isolated=0#統(tǒng)計(jì)第i個(gè)點(diǎn)最終被孤立的次數(shù) i_pairs=0#統(tǒng)計(jì)第i個(gè)點(diǎn)最終不被孤立的次數(shù) experiment=128000#總實(shí)驗(yàn)次數(shù)for index in range(experiment):print"-----------------------------index=%d-------------------------------"%indexa = [-1] * (n-1)#新的一輪實(shí)驗(yàn)開始,整個(gè)隊(duì)列清零while True:Flag=0#每次選擇”相鄰數(shù)對(duì)“時(shí),假定整條直線已經(jīng)沒有剩下可以選擇的數(shù)對(duì)了。point_pairs= random.randrange(0,n-1,1)#產(chǎn)生的隨機(jī)數(shù)∈[0,n-1),共n-1個(gè),下標(biāo)范圍是0~n-2print"point_pairs=",point_pairsif (point_pairs!=n-2 and point_pairs !=0) and point_pairs-a[point_pairs-1]==point_pairs-a[point_pairs+1]==point_pairs+1:#確保左右兩側(cè)都沒有點(diǎn)對(duì),才能落子a[point_pairs]=point_pairsif point_pairs==0 and a[1]==-1:#最左側(cè)的點(diǎn)對(duì),落筆時(shí)需要考慮確保第2個(gè)點(diǎn)和第3個(gè)點(diǎn)沒有連接成對(duì)a[point_pairs]=point_pairsif point_pairs==n-2 and a[n-3]==-1:#最右側(cè)的點(diǎn)對(duì),落筆時(shí)需要考慮確保第2個(gè)點(diǎn)和第個(gè)點(diǎn)沒有連接成對(duì)a[point_pairs]=point_pairsprint"-"*10print a[point_pairs]print"-"*10for i in range(n-3):#檢查整條直線中是否還有可選擇“相鄰數(shù)對(duì)”的余地,如果沒有了,那么本輪實(shí)驗(yàn)結(jié)束if a[i]+a[i+1]+a[i+2]==-3:#············○ a[i] ○ a[i+1] ○ a[i+2] ○············Flag=1breakif a[0]+a[1]==-2 or a[n-3]+a[n-2]==-2:#直線開頭最多只能空兩個(gè)數(shù),表示的含義是○ ○ ○-○······Flag=1break#---------------------------------------if Flag==1:continueif Flag==0:if a[i_nopairs-2]==a[i_nopairs-1]==-1:#a[i_nopairs-2] i a[i_nopairs-1]i_isolated=i_isolated+1print(a)break #------------------------------這里對(duì)Pi,n進(jìn)行驗(yàn)證----------------------------------------------------------experiment=experiment*1.0 print"i_isolated=",i_isolated print"The ratio of ith point isolated is:",i_isolated/experiments

?

實(shí)驗(yàn)結(jié)果為:

實(shí)驗(yàn)結(jié)果顯示:

第5個(gè)點(diǎn)為孤立的頻率是17934/128000

書上理論計(jì)算結(jié)果為9/64

所以理論計(jì)算結(jié)果與實(shí)驗(yàn)結(jié)果十分接近

---------------------------------------------------------------------------------------------------------

三、接下來(lái)模擬Pi,n(i=5,n=10,這是非對(duì)稱情況,i不再處于中央),稍作修改,代碼如下:

#=*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') n=10 i_nopairs=5#想孤立第5個(gè)點(diǎn)a = [-1] * (n-1) #定義一個(gè)長(zhǎng)度為10的list print a # 100個(gè)點(diǎn),來(lái)模擬101個(gè)數(shù),初始化為-1,-1表示該數(shù)左右兩側(cè)沒有連接 #如果最終結(jié)果中有兩個(gè)數(shù)為空(-1),則表示,這兩個(gè)數(shù)之間的點(diǎn)是孤立的。 #如果最終結(jié)果中有一個(gè)數(shù)為空(-1),則表示,這兩個(gè)數(shù)之間沒有點(diǎn)孤立 #如果運(yùn)行過程中存在連續(xù)三個(gè)數(shù)為空(-1),說明該輪隨機(jī)過程還沒結(jié)束,需要繼續(xù)進(jìn)行。 #判斷第i個(gè)點(diǎn)孤立的充分必要條件是:a[i-1]!=-1并且a[i-2]!=-1def print_a(a):#輸出隨機(jī)產(chǎn)生的最終結(jié)果print"\n--------最終產(chǎn)生的點(diǎn)對(duì)----"print"a=",afor index,item in enumerate(a):if index==0 and item!=-1:print"1 - 2",if index==0 and item==-1:print"1 2",if index>0 and item!=-1:print '-',index+2,if index>0 and item==-1:print index+2,print"\n"print"-"*30import random Flag=0#用來(lái)判斷當(dāng)前直線上是否還剩下可以選擇的數(shù)對(duì),0表示不存在,1表示還存在可以選擇的“相鄰數(shù)對(duì)”i_isolated=0#統(tǒng)計(jì)第i個(gè)點(diǎn)最終被孤立的次數(shù) i_pairs=0#統(tǒng)計(jì)第i個(gè)點(diǎn)最終不被孤立的次數(shù) experiment=80000#總實(shí)驗(yàn)次數(shù)for index in range(experiment):print"-----------------------------index=%d-------------------------------"%indexa = [-1] * (n-1)#新的一輪實(shí)驗(yàn)開始,整個(gè)隊(duì)列清零while True:Flag=0#每次選擇”相鄰數(shù)對(duì)“時(shí),假定整條直線已經(jīng)沒有剩下可以選擇的數(shù)對(duì)了。point_pairs= random.randrange(0,n-1,1)#產(chǎn)生的隨機(jī)數(shù)∈[0,n-1),共n-1個(gè),下標(biāo)范圍是0~n-2print"point_pairs=",point_pairsif (point_pairs!=n-2 and point_pairs !=0) and point_pairs-a[point_pairs-1]==point_pairs-a[point_pairs+1]==point_pairs+1:#確保左右兩側(cè)都沒有點(diǎn)對(duì),才能落子a[point_pairs]=point_pairsif point_pairs==0 and a[1]==-1:#最左側(cè)的點(diǎn)對(duì),落筆時(shí)需要考慮確保第2個(gè)點(diǎn)和第3個(gè)點(diǎn)沒有連接成對(duì)a[point_pairs]=point_pairsif point_pairs==n-2 and a[n-3]==-1:#最右側(cè)的點(diǎn)對(duì),落筆時(shí)需要考慮確保第2個(gè)點(diǎn)和第個(gè)點(diǎn)沒有連接成對(duì)a[point_pairs]=point_pairsprint"-"*10print a[point_pairs]print"-"*10for i in range(n-3):#檢查整條直線中是否還有可選擇“相鄰數(shù)對(duì)”的余地,如果沒有了,那么本輪實(shí)驗(yàn)結(jié)束if a[i]+a[i+1]+a[i+2]==-3:#············○ a[i] ○ a[i+1] ○ a[i+2] ○············Flag=1breakif a[0]+a[1]==-2 or a[n-3]+a[n-2]==-2:#直線開頭最多只能空兩個(gè)數(shù),表示的含義是○ ○ ○-○······Flag=1break#---------------------------------------if Flag==1:continueif Flag==0:if a[i_nopairs-2]==a[i_nopairs-1]==-1:#a[i_nopairs-2] i a[i_nopairs-1]i_isolated=i_isolated+1print(a)break #------------------------------這里對(duì)Pi,n進(jìn)行驗(yàn)證----------------------------------------------------------experiment=experiment*1.0 print"i_isolated=",i_isolated print"The ratio of ith point isolated is:",i_isolated/experiment

?

實(shí)驗(yàn)結(jié)果是:

由實(shí)驗(yàn)結(jié)果可知,10個(gè)點(diǎn)中,第5個(gè)點(diǎn)為孤立點(diǎn)的頻率為:10960/80000

由書上理論可知:P5,10=P5·P6=(3/8)(11/30)=11/80

所以實(shí)驗(yàn)結(jié)果與理論結(jié)果十分接近。

總結(jié)

以上是生活随笔為你收集整理的Ross《随机过程》(第二版)装填问题Python模拟实验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。