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

作者:aiqier 时间:2022-08-13 00:27:08 

本文实例讲述了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,算法
0
投稿

猜你喜欢

  • python迭代器自定义类的具体方法

    2023-07-08 06:17:30
  • sql之IN和BETWEEN条件运算

    2007-09-11 13:35:00
  • Xml中SelectSingleNode方法中的xpath用法

    2010-01-30 12:46:00
  • 不同浏览器所支持的“事件”

    2007-09-26 18:29:00
  • Python 函数装饰器应用教程

    2022-08-17 05:53:24
  • element 实现导航栏收起展开功能及思路

    2024-05-10 14:17:11
  • 验证码-挑战你的智慧

    2008-09-10 13:08:00
  • pandas进行数据的交集与并集方式的数据合并方法

    2022-05-16 08:48:08
  • pip 安装库比较慢的解决方法(国内镜像)

    2022-09-30 04:02:29
  • Python进阶之自定义对象实现切片功能

    2023-09-22 11:28:31
  • Python自定义一个异常类的方法

    2022-04-23 12:51:11
  • python3 QT5 端口转发工具两种场景分析

    2023-04-03 10:34:46
  • python线程池threadpool实现篇

    2022-03-21 19:37:34
  • Flask项目中实现短信验证码和邮箱验证码功能

    2022-02-24 00:12:58
  • python绘制简单彩虹图

    2022-09-06 04:55:14
  • pythotn条件分支与循环详解(3)

    2023-11-14 01:35:06
  • mysql查询表里的重复数据方法

    2024-01-16 07:13:19
  • 利用d3.js力导布局绘制资源拓扑图实例教程

    2024-05-22 10:35:26
  • Python实现CNN的多通道输入实例

    2021-10-10 11:33:07
  • Javascript非构造函数的继承

    2024-04-10 10:54:14
  • asp之家 网络编程 m.aspxhome.com