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学习资料
Feb 08 Python
Web服务器框架 Tornado简介
Jul 16 Python
pandas Dataframe行列读取的实例
Jun 08 Python
Python将一个Excel拆分为多个Excel
Nov 07 Python
Django如何实现上传图片功能
Aug 16 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
Python 高效编程技巧分享
Sep 10 Python
如何用python开发Zeroc Ice应用
Jan 29 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
php若干单维数组遍历方法的比较
2011/09/20 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
php实现session共享的实例方法
2019/09/19 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
Jquery 扩展方法
2010/05/06 Javascript
初识javascript 文档碎片
2010/07/13 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
js实现随机点名小功能
2017/08/17 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
傲盾软件面试题
2015/08/17 面试题
公务员年总结的自我评价
2013/10/25 职场文书
新闻专业应届生求职信
2013/10/31 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
企业内控岗位的职责
2014/02/07 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
公司股份转让协议书范本
2015/01/28 职场文书