python实现马耳可夫链算法实例分析

yipeiwu_com6年前Python基础

本文实例讲述了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导入模块import与常见的模块详解

0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其...

python实现解数独程序代码

python实现解数独程序代码

偶然发现linux系统附带的一个数独游戏,打开玩了几把。无奈是个数独菜鸟,以前没玩过,根本就走不出几步就一团浆糊了。 于是就打算借助计算机的强大运算力来暴力解数独,还是很有乐趣的。 下面...

python issubclass 和 isinstance函数

Python issubclass() 函数 issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类。 语法: issubclass(...

详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案

详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案

人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包。但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很影响自己的工作进度,这里给出一个pip快速安装...

python技能之数据导出excel的实例代码

python技能之数据导出excel的实例代码

本文介绍了python技能之导出excel的实例代码,正好能用到,写出来分享给大家 作为一个数据分析师,下面的需求是经常会遇到的。 从数据库或者现有的文本文件中提取符合要求的数据,做...