python实现马耳可夫链算法实例分析


Posted in Python onMay 20, 2015

本文实例讲述了python实现马耳可夫链算法的方法。分享给大家供大家参考。具体分析如下:

在《程序设计实践》(英文名《The Practice of Programming》)的书中,第三章分别用C语言,C++,AWK和Perl分别实现了马耳可夫链算法,来通过输入的文本,“随机”的生成一些有用的文本。

说明:

1. 程序使用了字典,字典和散列可不是一个东西,字典是键值对的集合,而散列是一种能够常数阶插入,删除,不过可以用散列来实现字典。
2. 字典的setdefault()方法使得程序少了许多条件判断。
3. random.choice()可以随机取出一个序列中的元素。
4. 每两个前缀词确定一个后缀。

实现代码:

import random
import sys
MAXGEN = 10000
NONWORD = '\n'
w1 = w2 = NONWORD
statetab = {}
text = sys.stdin.read()
words = text.split()
for word in words:
  statetab.setdefault((w1, w2),[]).append(word)
  w1, w2 = w2, word
# add tail
statetab.setdefault((w1, w2),[]).append(NONWORD)
# show mar words
w1 = w2 = NONWORD
for i in xrange(MAXGEN):
  suf = statetab[(w1,w2)]
  t = random.choice(suf)
  if t == NONWORD:
 break
  print t
  w1, w2 = w2, t

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
Aug 30 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
Python selenium抓取微博内容的示例代码
May 17 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
python如何制作英文字典
Jun 25 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
Python字典生成式、集合生成式、生成器用法实例分析
Jan 07 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
在keras下实现多个模型的融合方式
May 23 Python
Python爬虫之爬取淘女郎照片示例详解
Jul 28 Python
Python中List.count()方法的使用教程
May 20 #Python
在Python中操作列表之List.append()方法的使用
May 20 #Python
简单介绍Python2.x版本中的cmp()方法的使用
May 20 #Python
python操作mongodb根据_id查询数据的实现方法
May 20 #Python
Python中列表的一些基本操作知识汇总
May 20 #Python
python对数组进行反转的方法
May 20 #Python
在Python中处理字符串之isdecimal()方法的使用
May 20 #Python
You might like
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
php生成圆角图片的方法
2015/04/07 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
ArrayList类(增强版)
2007/04/04 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
jquery等待效果示例
2014/05/01 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
python下载图片实现方法(超简单)
2017/07/21 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
python绘制立方体的方法
2018/07/02 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Python生成器常见问题及解决方案
2020/03/21 Python
Python urllib3软件包的使用说明
2020/11/18 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
工作个人的自我评价
2014/01/14 职场文书
网络营销计划书
2015/01/17 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
Golang日志包的使用
2022/04/20 Golang