Re: [問題] 跳蚤馬戲團-模擬或解析?
看板Mathematica作者chungyuandye (養花種魚數月亮賞星星)時間12年前 (2012/03/17 00:06)推噓1(1推 0噓 1→)留言2則, 1人參與討論串2/2 (看更多)
※ 引述《jurian0101 (Hysterisis)》之銘言:
: 正在用我layman的實力努力攻Project Euler
: http://projecteuler.net
: 其實Mathematica解這平台的一些題目是有長處的,那些大致上只需要形成一個明確的
: data structure,算法也明確化之後,Mathematica的程式碼會(以layman觀點)很優雅
: - - -
: 目前有疑問的是這一題 213:Flea Circus
: 大意是有一個30 X 30 的大棋盤,每格中各有一隻跳蚤。每次鐘一響,
: 跳蚤有平均的機率跳到相鄰的格子(如角落兩格各1/2,邊緣三格各1/3,其餘1/4)
: 請問在50響鐘聲之後,沒有跳蚤的格子數量的期望值是多少?
next[i_,j_]:=Block[{temp},
temp=Table[0,{x,30},{y,30}];
Which[
i==1&&j==1,temp[[1,2]]=temp[[2,1]]=1/2,
i==1&&2<=j<=29,temp[[1,j-1]]=temp[[1,j+1]]=temp[[2,j]]=1/3,
i==1&&j==30,temp[[1,29]]=temp[[2,30]]=1/2,
2<=i<=29&&2<=j<=29,temp[[i-1,j]]=temp[[i+1,j]]=temp[[i,j-1]]=temp[[i,j+1]]=1/4,
2<=i<=29&&j==1,temp[[i-1,1]]=temp[[i+1,1]]=temp[[i,2]]=1/3,
2<=i<=29&&j==30,temp[[i-1,30]]=temp[[i+1,30]]=temp[[i,29]]=1/3,
i==30&&j==1,temp[[29,1]]=temp[[30,2]]=1/2,
i==30&&2<=j<=29,temp[[30,j-1]]=temp[[30,j+1]]=temp[[29,j]]=1/3,
i==30&&j==30,temp[[29,30]]=temp[[30,29]]=1/2
];
N@Flatten[Table[temp[[x,y]],{x,30},{y,30}]]
]
(* 轉移矩陣 *)
tm=next@@@Flatten[Table[{i,j},{i,30},{j,30}],1];
(* 計算每隻跳蚤在50響鐘聲在各座標的機率,之後求積並做加總 *)
ans213=Total[Times@@@(Table[1,{i,900},{j,900}]-Nest[#.tm&,tm,50])]
(* monte carlo *)
nextsquare[i_,j_]:=
Which[
i==1&&j==1,RandomChoice[{{1,2},{2,1}}],
i==1&&2<=j<=29,RandomChoice[{{1,j-1},{1,j+1},{2,j}}],
i==1&&j==30,RandomChoice[{{1,29},{2,30}}],
2<=i<=29&&2<=j<=29,RandomChoice[{{i-1,j},{i+1,j},{i,j-1},{i,j+1}}],
2<=i<=29&&j==1,RandomChoice[{{i-1,1},{i+1,1},{i,2}}],
2<=i<=29&&j==30,RandomChoice[{{i-1,30},{i+1,30},{i,29}}],
i==30&&j==1,RandomChoice[{{29,1},{30,2}}],
i==30&&2<=j<=29,RandomChoice[{{30,j-1},{30,j+1},{29,j}}],
i==30&&j==30,RandomChoice[{{29,30},{30,29}}]
]
(* 所有方格座標 *)
flea=Flatten[Table[{i,j},{i,30},{j,30}],1];
DistributeDefinitions[nextsquare,flea];
(* 計算每隻跳蚤在50響鐘聲之後的座標,之後取餘集,實驗1000次,最後求平均 *)
Mean@ParallelTable[Length[Complement[flea,
Table[Nest[nextsquare@@#&,z,50],{z,flea}]]],{1000}]
--
養花種魚數月亮賞星星
http://chungyuandye.twbbs.org
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.130.115
※ 編輯: chungyuandye 來自: 218.173.130.115 (03/17 00:17)
推
03/17 10:42, , 1F
03/17 10:42, 1F
→
03/17 10:43, , 2F
03/17 10:43, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章