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线程锁(thread)学习示例
Dec 04 Python
Python编程中的文件操作攻略
Oct 16 Python
Python设置默认编码为utf8的方法
Jul 01 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
python列表生成式与列表生成器的使用
Feb 23 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
Python常见内置高效率函数用法示例
Jul 31 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
django 多数据库及分库实现方式
Apr 01 Python
Django限制API访问频率常用方法解析
Oct 12 Python
python 基于selectors库实现文件上传与下载
Dec 31 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如何连接sql server
2015/10/16 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
php中yii框架实例用法
2020/12/22 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
几种tab切换详解
2017/02/03 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python类的专用方法实例分析
2015/01/09 Python
python计算auc指标实例
2017/07/13 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
Python解析微信dat文件的方法
2020/11/30 Python
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
现代化办公人员工作的自我评价
2013/10/16 职场文书
新闻专业推荐信范文
2013/11/20 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
医院营销工作计划
2015/01/16 职场文书
数学教师个人总结
2015/02/06 职场文书
新店开张宣传语
2015/07/13 职场文书