%%奇偶規(guī)則游戲
clear;clc;
n =200;%指定邊界長度
Se =zeros(n);
z =zeros(n);Se(n/2-2:n/2+2,n/2-2:n/2+2)=1;%初始化中間的點
Ch =imagesc(Se);
axis square;
Sd =zeros(n+2);%邊界
while(true)%死循環(huán)Sd(2:n+1,2:n+1)= Se;sumValue =Sd(1:n,2:n+1)+Sd(3:n+2,2:n+1)+Sd(2:n+1,1:n)+Sd(2:n+1,3:n+2);Se =mod(sumValue,2);set(Ch,'cdata',Se);pause(0.03)
end
運行效果:
2.生命游戲
matlab代碼:
clear;clc;%%生命游戲
n =200;
p =0.4;
z =zeros(n);
Se =rand(n)<p;
Sd =zeros(n+2);
Ph =imagesc(Se);while(true)Sd(2:n+1,2:n+1)=Se;sumValue =Sd(1:n,1:n)+Sd(1:n,2:n+1)+Sd(1:n,3:n+2)+Sd(2:n+1,1:n)+Sd(2:n+1,3:n+2)+Sd(3:n+2,1:n)+Sd(3:n+2,2:n+1)+Sd(3:n+2,3:n+2);for i=1:nfor j=1:nif(sumValue(i,j)==3||(sumValue(i,j)==2&&Se(i,j)==1))Se(i,j)=1;elseSe(i,j)=0;endendendset(Ph,'cdata',Se);pause(0.05);
end
運行效果:
3.森林火災(zāi)
matlab代碼:
clear;clc;%火災(zāi)
n =300;% 定義表示森林的矩陣大小
k =30000;% 迭代次數(shù)
Pground =0.8;% 從著火變成空地的概率
Plight =5e-6; Pgrowth =1e-3;% 定義閃電和生長的概率
P2=0.7;%旁邊有火,樹著火的概率
UL =[n,1:n-1]; DR =[2:n,1];% 定義上左,下右鄰居
veg=zeros(n,n)+2;% 初始化表示森林的矩陣
imh =image(cat(3,veg,veg,veg));% 可視化表示森林的矩陣
Sd =zeros(n+2);%邊界
% veg = 空地為0 著火為1 樹木為2for i=1:kSd(2:n+1,2:n+1)= veg;sumValue =(Sd(1:n,2:n+1)==1)+(Sd(2:n+1,1:n)==1)+(Sd(2:n+1,3:n+2)==1)+(Sd(3:n+2,2:n+1)==1);for p=1:nfor q=1:nif((sumValue(p,q)>0||rand()<Plight)&&veg(p,q)==2&&rand()<P2)%首先要是樹,而且需要鄰居有火或者被雷劈了,就會一定概率著火veg(p,q)=1;elseif(veg(p,q)==1&&rand()<Pground)%如果是火且滿足概率,則變?yōu)榭盏?span id="ozvdkddzhkzd" class="token function">veg(p,q)=0;elseif(veg(p,q)==0&&sumValue(p,q)==0&&rand()<Pgrowth)%如果是空地,且周圍沒有火,那么以一定概率長成樹veg(p,q)=2;endendendset(imh,'cdata',cat(3,(veg==1),(veg==2),zeros(n)))drawnow
end