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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
跟老齐学Python之有容乃大的list(4)
Sep 28 Python
日常整理python执行系统命令的常见方法(全)
Oct 22 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
Python的log日志功能及设置方法
Jul 11 Python
python字典的setdefault的巧妙用法
Aug 07 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
Oct 22 Python
python错误调试及单元文档测试过程解析
Dec 19 Python
Python 实现一行输入多个数字(用空格隔开)
Apr 29 Python
python随机模块random的22种函数(小结)
May 15 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/30 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
sails框架的学习指南
2014/12/22 Javascript
jquery延迟对象解析
2016/10/26 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
react配置antd按需加载的使用
2019/02/11 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
Python利用requests模块下载图片实例代码
2019/08/12 Python
mac使用python识别图形验证码功能
2020/01/10 Python
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
公务员总结性个人自我评价
2013/12/05 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
机关党员公开承诺书
2014/08/30 职场文书
硕士学位申请报告
2015/05/15 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL