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代码打包为jar软件的简单方法
Aug 04 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
详解python单元测试框架unittest
Jul 02 Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
在django view中给form传入参数的例子
Jul 19 Python
Django 批量插入数据的实现方法
Jan 12 Python
Python3.7黑帽编程之病毒篇(基础篇)
Feb 04 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
Python分类测试代码实例汇总
Jul 23 Python
python re的findall和finditer的区别详解
Nov 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
2009/06/29 PHP
php析构函数的简单使用说明
2015/08/24 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
js里取容器大小、定位、距离等属性搜集整理
2013/08/19 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
对Python发送带header的http请求方法详解
2019/01/02 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
python3 字符串知识点学习笔记
2020/02/08 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
什么是反射
2012/03/17 面试题
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
ajax是什么及其工作原理
2012/02/08 面试题
写好自荐信的技巧
2013/11/08 职场文书
小学教师师德反思
2014/02/03 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
小学班主任个人总结
2015/03/03 职场文书