簡介
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),銀海企業(yè)網(wǎng)站建設(shè),銀海品牌網(wǎng)站建設(shè),網(wǎng)站定制,銀海網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,銀海網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。細(xì)胞自動機(jī)(又稱元胞自動機(jī)),名字雖然很深奧,但是它的行為卻是非常美妙的。所有這些怎樣實(shí)現(xiàn)的呢?我們可以把計算機(jī)中的宇宙想象成是一堆方格子構(gòu)成的封閉空間,尺寸為N的空間就有NN個格子。而每一個格子都可以看成是一個生命體,每個生命都有生和死兩種狀態(tài),如果該格子生就顯示藍(lán)色,死則顯示白色。每一個格子旁邊都有鄰居格子存在,如果我們把33的9個格子構(gòu)成的正方形看成一個基本單位的話,那么這個正方形中心的格子的鄰居就是它旁邊的8個格子。
每個格子的生死遵循下面的原則:
1. 如果一個細(xì)胞周圍有3個細(xì)胞為生(一個細(xì)胞周圍共有8個細(xì)胞),則該細(xì)胞為生(即該細(xì)胞若原先為死,則轉(zhuǎn)為生,若原先為生,則保持不變) 。
2. 如果一個細(xì)胞周圍有2個細(xì)胞為生,則該細(xì)胞的生死狀態(tài)保持不變;
3. 在其它情況下,該細(xì)胞為死(即該細(xì)胞若原先為生,則轉(zhuǎn)為死,若原先為死,則保持不變)
設(shè)定圖像中每個像素的初始狀態(tài)后依據(jù)上述的游戲規(guī)則演繹生命的變化,由于初始狀態(tài)和迭代次數(shù)不同,將會得到令人嘆服的優(yōu)美圖案。
代碼
""" 元胞自動機(jī) Python 實(shí)現(xiàn) """ import numpy as np import matplotlib.pyplot as plt class GameOfLife(object): def __init__(self, cells_shape): """ Parameters ---------- cells_shape : 一個元組,表示畫布的大小。 Examples -------- 建立一個高20,寬30的畫布 game = GameOfLife((20, 30)) """ # 矩陣的四周不參與運(yùn)算 self.cells = np.zeros(cells_shape) real_width = cells_shape[0] - 2 real_height = cells_shape[1] - 2 self.cells[1:-1, 1:-1] = np.random.randint(2, size=(real_width, real_height)) self.timer = 0 self.mask = np.ones(9) self.mask[4] = 0 def update_state(self): """更新一次狀態(tài)""" buf = np.zeros(self.cells.shape) cells = self.cells for i in range(1, cells.shape[0] - 1): for j in range(1, cells.shape[0] - 1): # 計算該細(xì)胞周圍的存活細(xì)胞數(shù) neighbor = cells[i-1:i+2, j-1:j+2].reshape((-1, )) neighbor_num = np.convolve(self.mask, neighbor, 'valid')[0] if neighbor_num == 3: buf[i, j] = 1 elif neighbor_num == 2: buf[i, j] = cells[i, j] else: buf[i, j] = 0 self.cells = buf self.timer += 1 def plot_state(self): """畫出當(dāng)前的狀態(tài)""" plt.title('Iter :{}'.format(self.timer)) plt.imshow(self.cells) plt.show() def update_and_plot(self, n_iter): """更新狀態(tài)并畫圖 Parameters ---------- n_iter : 更新的輪數(shù) """ plt.ion() for _ in range(n_iter): plt.title('Iter :{}'.format(self.timer)) plt.imshow(self.cells) self.update_state() plt.pause(0.2) plt.ioff() if __name__ == '__main__': game = GameOfLife(cells_shape=(60, 60)) game.update_and_plot(200)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章標(biāo)題:詳解Python實(shí)現(xiàn)元胞自動機(jī)中的生命游戲(Gameoflife)-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://m.newbst.com/article16/dcjodg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、軟件開發(fā)、虛擬主機(jī)、網(wǎng)頁設(shè)計公司、網(wǎng)站內(nèi)鏈、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容