public void GenerateTest()
{
double[,] A;
double[] pi;
A = new double[,]
{
{ 0.7, 0.3 },
{ 0.4, 0.6 }
};
GeneralDiscreteDistribution[] B =
{
new GeneralDiscreteDistribution(0.1, 0.4, 0.5),
new GeneralDiscreteDistribution(0.6, 0.3, 0.1)
};
pi = new double[]
{
0.6, 0.4
};
var hmm = new HiddenMarkovModel<GeneralDiscreteDistribution, double>(A, B, pi);
double logLikelihood;
int[] path;
double[] samples = (double[])hmm.Generate(10, out path, out logLikelihood);
double expected = hmm.Evaluate(samples, path);
Assert.AreEqual(expected, logLikelihood);
}