成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

詳解Python實現(xiàn)元胞自動機中的生命游戲(Gameoflife)-創(chuàng)新互聯(lián)

簡介

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,銀海企業(yè)網(wǎng)站建設,銀海品牌網(wǎng)站建設,網(wǎng)站定制,銀海網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,銀海網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

細胞自動機(又稱元胞自動機),名字雖然很深奧,但是它的行為卻是非常美妙的。所有這些怎樣實現(xiàn)的呢?我們可以把計算機中的宇宙想象成是一堆方格子構成的封閉空間,尺寸為N的空間就有NN個格子。而每一個格子都可以看成是一個生命體,每個生命都有生和死兩種狀態(tài),如果該格子生就顯示藍色,死則顯示白色。每一個格子旁邊都有鄰居格子存在,如果我們把33的9個格子構成的正方形看成一個基本單位的話,那么這個正方形中心的格子的鄰居就是它旁邊的8個格子。

每個格子的生死遵循下面的原則:

1. 如果一個細胞周圍有3個細胞為生(一個細胞周圍共有8個細胞),則該細胞為生(即該細胞若原先為死,則轉為生,若原先為生,則保持不變) 。

2. 如果一個細胞周圍有2個細胞為生,則該細胞的生死狀態(tài)保持不變;

3. 在其它情況下,該細胞為死(即該細胞若原先為生,則轉為死,若原先為死,則保持不變)

設定圖像中每個像素的初始狀態(tài)后依據(jù)上述的游戲規(guī)則演繹生命的變化,由于初始狀態(tài)和迭代次數(shù)不同,將會得到令人嘆服的優(yōu)美圖案。

代碼

"""
元胞自動機 Python 實現(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))
    
    """

    # 矩陣的四周不參與運算
    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):
        # 計算該細胞周圍的存活細胞數(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):
    """畫出當前的狀態(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)

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章標題:詳解Python實現(xiàn)元胞自動機中的生命游戲(Gameoflife)-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://jinyejixie.com/article16/dcjodg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)軟件開發(fā)、虛擬主機網(wǎng)頁設計公司、網(wǎng)站內鏈、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站制作
重庆市| 南川市| 广饶县| 德阳市| 南靖县| 麻城市| 静宁县| 嘉定区| 淮安市| 浦城县| 镇平县| 武安市| 阿鲁科尔沁旗| 黎川县| 卢氏县| 荆门市| 福清市| 宁城县| 长治县| 定边县| 淄博市| 天水市| 东方市| 民乐县| 丰县| 张家界市| 宁陵县| 定州市| 五华县| 苗栗市| 明溪县| 屏南县| 蒙自县| 博湖县| 高陵县| 邯郸县| 凤城市| 镇赉县| 阜城县| 体育| 咸阳市|