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迭代器与生成器详解
Mar 10 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
Python连接Redis的基本配置方法
Sep 13 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
python如何实现数据的线性拟合
Jul 19 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
python实现控制台输出彩色字体
Apr 05 Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 Python
python 经纬度求两点距离、三点面积操作
Jun 03 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 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的ob_start();控制您的浏览器cache!
2007/02/14 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
javascript div 弹出可拖动窗口
2009/02/26 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
Django 源码WSGI剖析过程详解
2019/08/05 Python
Python文件路径名的操作方法
2019/10/30 Python
python如何代码集体右移
2020/07/20 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
老公保证书范文
2014/04/29 职场文书
文秘应届生求职信
2014/07/05 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
2014年文秘工作总结
2014/11/25 职场文书
高三英语教学计划
2015/01/23 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript