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制作检测Linux运行信息的工具的教程
Apr 01 Python
python 专题九 Mysql数据库编程基础知识
Mar 16 Python
Python断言assert的用法代码解析
Feb 03 Python
Python判断一个文件夹内哪些文件是图片的实例
Dec 07 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
python实现无边框进度条的实例代码
Dec 30 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 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购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
python装饰器原理与用法深入详解
2019/12/19 Python
如何在python中执行另一个py文件
2020/04/30 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
大学毕业生通用自荐信范文
2013/10/31 职场文书
中专毕业生自我鉴定
2013/11/21 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
科技工作者先进事迹
2014/08/16 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
python如何在word中存储本地图片
2021/04/07 Python
python实现简单的名片管理系统
2021/04/26 Python
详解vue中v-for的key唯一性
2021/05/15 Vue.js
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL