本文转载自http://www.cnblogs.com/cfantaisie/archive/2011/04/11/2012937.html

英国数学家J.H.Conway在1970年提出一种被称作“生命游戏”的小游戏。
Life游戏实际上是一种模拟,并不是游戏者之间的游戏。它在一个无边界的矩形网格上进行,这个矩形网格中
的每个单元可被一个有机体占据,或者不被占据。被占据的单元称为活的,未被占据的单元称位死的。哪个单
元是活的要根据其周围活的邻居单元数目而一代代地发生变化。

游戏规则如下:
1. 给定单元的邻居是与它在垂直,水平或对角上相界的8个单元。
2. 如果1个单元为活的,但没有邻居单元是活的,或者仅有一个邻居单元是活的,则在下一代,此单元
会因为孤独而死亡。
   3. 如果1个单元周围有2个或者3个邻居单元为生,则该单元在下一代也是活的。
4. 如果1个单元是死的,则在下一代,如果它刚好有3个邻居单元是活的,则此单元变成活的。
所有其它死的单元在下一代仍然是死的。
5. 如果1个单元为活的,且有4个或者4个以上邻居单元是活的,则在下一代,此单元会因为拥塞而死亡。
   6. 所有出生和死亡都刚好在同一时间发生,则此单元的死亡有助于另一个单元的出生,但它不能通过
减少拥塞而阻止其他单元的死亡;正在出生的单元也不能保护或者杀死上一代中活的单元。

   依此规则进行迭代变化,使单元生生死死,会得到一些有趣的结果。该游戏之所以被称为“生命游戏”,
是因为其简单的游戏规则,反映了自然界中的生存规律:如果一个生命,其周围的同类生命太少的话,
会因为得不到帮助而死亡;如果太多,则会因为得不到足够的资源而死亡。

   用计算机模拟这个“生命游戏”设定图像中的初始配置后依据上述的游戏规则演绎生命的变化,
由于初始状态和迭代次数不同,将会得到各种的优美图案。

  本文在matlab下模拟了个“生命游戏”,不足之处由于初始状态随机设置,图案美观性欠缺…

  matlab代码如下:
  

s=100;      % 棋盘宽,棋盘是方的,即每行每列可以有100个元包自动机
w=8;        % 每一个元包的像素宽度
board=zeros(w*s,s*w);   %棋盘图片
state=zeros(s,s);       %元包自动机的状态
newState=zeros(s,s);%%  初始化
for i=1:sfor j=1:sif rand<0.4         %   随机在棋盘上以0.4的生存概率设置自动机状态state(i,j)=1;   %   其实分的随机设置状态会导致非常离散的点,最后收敛时棋盘上剩下些孤立的点endend
end
figure;
%%  更新状态
for k=1:1000tmp=cputime;for i=1:sfor j=1:s%   计算邻居着活着的个数cnt=0;if i-1>0&&j-1>0cnt=cnt+state(i-1,j-1);endif i-1>0&&j+1<=scnt=cnt+state(i-1,j+1);endif i+1<=s&&j+1<=scnt=cnt+state(i+1,j+1);endif i+1<=s&&j-1>0cnt=cnt+state(i+1,j-1);endif j-1>0cnt=cnt+state(i,j-1);endif j+1<=scnt=cnt+state(i,j+1);endif i-1>0cnt=cnt+state(i-1,j);endif i+1<=scnt=cnt+state(i+1,j);end%   更新状态、着色newState(i,j)=state(i,j);if state(i,j)==0if cnt==3newState(i,j)=1;endelseif state(i,j)==1if cnt<2||cnt>3newState(i,j)=0;endendif newState(i,j)==0board(((i-1)*w+1):i*w,((j-1)*w+1):j*w)=0;elseboard(((i-1)*w+1):i*w,((j-1)*w+1):j*w)=255;endendendt=cputime-tmp;state=newState;imshow(board);pause(0.3);end

matlab 生命游戏相关推荐

  1. matlab 生命游戏(可调节代数,存活条件,繁殖条件)

    以前写的,主要是受到golly这个软件的启发(感觉是个很好玩的软件) 这个生命游戏可调节代数,存活条件,繁殖条件 like this 运行效果 代码: function lifeinput(arg1) ...

  2. matlab 生命游戏 可自己输入图像

    制作了一个生命游戏的小游戏 上下左右移动红点 空格绘制生命 按键B开始运动 按键C暂停 按键A清空 按键backspace删除生命 游戏截图 动图 代码部分 function lifecontrol ...

  3. 【元胞自动机】元胞自动机生命游戏【含Matlab源码 655期】

    ⛄一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何 ...

  4. 【老生谈算法】matlab实现生命游戏源码——生命游戏

    MATLAB实现生命游戏源码 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]MATLAB实现生命游戏源码.docx 2.算法 ...

  5. 元胞自动机 | Matlab实现基于CA元胞自动机的生命游戏模拟

    文章目录 效果一览 文章概述 程序设计 参考资料 效果一览 文章概述 元胞自动机 | 基于CA元胞自动机的生命游戏模拟."生命游戏"是一个"元胞自动机",它是一 ...

  6. 元胞自动机CA+生命游戏代码

    1.元胞自动机 元胞自动机(Cellular Automaton,复数为Cellular Automata,简称CA,也有人译为细胞自动机.点格自动机.分子自动机或单元自动机).是一时间和空间都离散的 ...

  7. Python实现生命游戏(Game of Life)

    生命游戏的算法就不多解释了,百度一下介绍随处可见. 因为网上大多数版本都是基于pygame,matlab等外部库实现的,二维数组大多是用numpy,使用起来学习成本比较高,所以闲暇之余写一个不用外部依 ...

  8. 伍六七带你学算法 进阶篇-生命游戏

    有趣的算法题–生命游戏 难度-中等 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 想要体验生命游戏的小伙伴可以到这里-->生命游戏 进入 ...

  9. html5 生存游戏,html5版生命游戏

    html5版生命游戏 只有一个.html文件,无任何依赖. 使用canvas 1.[文件] index.html ~ 4KB     下载(206) canvas { background: #eee ...

  10. 康威生命游戏是如何搭建计算机的?

    2020年4月,数学家约翰·康威(John H. Conway)因新冠肺炎去世.大家回顾康威教授平生贡献时,不可避免要提到伟大.深刻的"康威生命游戏"(Conway's Game ...

最新文章

  1. 面向对象UML中类关系
  2. 入手ipod touch4
  3. hibernate配置文件(简单版)
  4. Exception in thread “main“ org.apache.ibatis.exceptions.PersistenceException奇葩解决方案
  5. WTM系列视频教程:先导篇
  6. django 学习 (四) 模板标签
  7. vs简易计算机等于号代码,等于(=)vs.
  8. (矩阵快速幂)解所有类似Fibonacci 的题目
  9. 银行大数据新玩法,构建“一湖两库”金融数据湖
  10. python连接不上数据库_详解pycharm连接不上mysql数据库的解决办法
  11. C语言丨小 学 数 学(二):高精度乘法
  12. 实验3-4 统计字符 (15 分)
  13. java calendar 时分秒_Java中Calendar类的常用方法(对时间进行计算的类)
  14. Java 8整装待发 图谋云计算
  15. 【BZOJ 4503】4503: 两个串 (FFT)
  16. python之函数用法basestring
  17. 关于attachEvent与addEventListener事件绑定兼容问题
  18. 宇视服务器硬盘序列号,宇视科技云存储服务器
  19. 【JavaWeb】button自带的reset方法
  20. plot confusion_matrix

热门文章

  1. 人工智能系列:AI 可视化训练平台
  2. 从应用工程师的角度再谈车载 Android 系统
  3. 安装ghostscript
  4. jpg转pdf转换器注册码
  5. matlab开环传递函数 求单位负反馈的系统传递函数,已知单位反馈系统开环传递函数.doc...
  6. java readpassword_Java Password.readPassword方法代碼示例
  7. java编写简单聊天界面_java实现简单聊天室单人版
  8. Android自定义view之围棋动画,kotlin实现接口
  9. 专业的格式转换工具pdf2cad发布v11,支持当前所有的Windows和Mac操作系统
  10. 写了个算分压电阻阻值的MATLAB小程序