csharp 基于马尔可夫链的简单文本生成器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 基于马尔可夫链的简单文本生成器相关的知识,希望对你有一定的参考价值。
using System;
using System.Collections.Generic;
using System.Linq;
static class Program
{
static void Main(string[] args)
{
var input = "foo bar baz foo bar qux".Split();
var table = input.Zip(input.Skip(1), Tuple.Create)
.Zip(input.Skip(2), Tuple.Create)
.ToLookup(p => p.Item1, p => p.Item2);
Func<Tuple<string, string>, Random, IEnumerable<string>> generate = null;
generate = (key, random) => new[] { key.Item1 }.Concat(key.Item2 == null ? new string[] { } : new[] { 0 }.SelectMany(_ => generate(Tuple.Create(key.Item2, table[key].ElementAtOrDefault(random.Next(table[key].Count()))), random)));
Console.WriteLine(String.Join(" ", generate(table.First().Key, new Random()).Take(50)));
}
}
以上是关于csharp 基于马尔可夫链的简单文本生成器的主要内容,如果未能解决你的问题,请参考以下文章
r 在R中生成带有马尔可夫链的文本
在 Swift 中使用马尔可夫链生成文本
蒙特卡罗方法生成指定状态空间下对应长度的马尔可夫链--MATLAB源程序
蒙特卡罗方法生成指定状态空间下对应长度的马尔可夫链--MATLAB源程序
应用随机过程03:马尔可夫链的状态
应用随机过程02:马尔可夫链及其概率分布