[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[技术讨论] 细胞自动机Python脚本运行到最后都稳定在一个状态不变了,高手给看看算法对不对

  1. import random
  2. import os
  3. import time
  4. def init(level):
  5.     return random.randint(0,level)
  6. dict={' ':0,'●':1}
  7. cells=[[' ' for x in range(32)] for y in range(22)]
  8. grid=[[' ' for x in range(32)] for y in range(22)]
  9. while True:
  10.     level=input('larger number,less cells (>0):')
  11.     try:
  12.         if int(level)>0:
  13.             for y in range(1,21):
  14.                 for x in range(1,31):
  15.                     r=random.randint(0,int(level))
  16.                     if r==0:cells[y][x]='●'
  17.             break
  18.     except:pass
  19. for y in cells:print(' '.join(y))
  20. print("press key to begin...")
  21. os.system('pause >nul')
  22. i=0
  23. while True:
  24.     for y in range(1,21):
  25.         for x in range(1,31):
  26.             num=dict[cells[y-1][x-1]]+\
  27.                 dict[cells[y-1][x+1]]+\
  28. dict[cells[y-1][x]]+\
  29. dict[cells[y+1][x-1]]+\
  30. dict[cells[y+1][x+1]]+\
  31. dict[cells[y+1][x]]+\
  32. dict[cells[y][x-1]]+\
  33. dict[cells[y][x+1]]
  34.             if num==3:grid[y][x]='●'
  35.             elif num==2:grid[y][x]=cells[y][x]
  36.             elif num :grid[y][x]=' '
  37.     for y in range(1,21):
  38.         for x in range(1,31):
  39.             cells[y][x]=grid[y][x]
  40.     time.sleep(0.05)
  41.     os.system('cls')
  42.     i+=1
  43.     print('time: '+str(i))
  44.     for y in cells:print(' '.join(y))
复制代码
这是出生概率为33%时的稳定状态,基本不变了,个别在动

概率50%的

如果要把这个脚本用迭代函数或者生成器写出来,该怎么改啊,加上是二维数组我更不会写了
!scripting!

开头那个函数忘了删掉了 没有用
!scripting!

TOP

回复 3# CrLf
原来是运气问题 10%概率的时候竟然运行到1200多次才稳定 先前没几下就死完了
!scripting!

TOP

回复 5# CrLf
对啊 肯定有问题
!scripting!

TOP

回复 5# CrLf
有一行我写错了 elif:num 应该改成else:
1

评分人数

    • CrLf: 卧槽,没发现技术 + 1
!scripting!

TOP

回复 5# CrLf
在第37行那 可是逻辑上这两者没什么不同啊
!scripting!

TOP

回复 5# CrLf
改了37行以后应该对了运行了几次都类似这种

我还奇怪呢 10%的概率那么小怎么变化那么久 你不说我都想不起来孤立这回事
!scripting!

TOP

改制后基本各种概率下基本都在200次以内稳定了
!scripting!

TOP

回复 11# 523066680

很有可能啊 我试试看直接引用是什么效果 然后对比一下
!scripting!

TOP

回复 11# 523066680
改成引用后明显运动没规律了 细胞较多时好像不像能稳定的样子 我原先改过的应该是对的 都稳定了 形态也符合算法
!scripting!

TOP

回复 14# 523066680
谢啦版主 看来细胞自动机最后都要稳定啊
!scripting!

TOP

回复 17# 523066680
版主好人!
只是输入矩阵麻烦些 我试试吧
!scripting!

TOP

回复 20# 523066680
读入应该不难 难的是cmd窗口太小了 cmd30列就到头了 行只有20左右 难不成再学下GUI!版主有没有好办法教教小弟
!scripting!

TOP

回复 21# CrLf
高手就是高手 我的理解有问题 我以为num只要不为空就成立了 忘了0也是 C语言没学好
!scripting!

TOP

回复 20# 523066680
才发现cmd原来可以设置的
!scripting!

TOP

返回列表