/// <summary>Constructs a new MarkovChain2IntGenerator /// </summary> /// <param name="frequencies">The conditional frequencies for the elements to generate, /// where frequencies[m][n] is the relative prob of generating n given m was generated /// the last time </param> public MarkovChain2IntGenerator(float[][] frequencies) { int symbolCount = frequencies.Length; var initialFrequencies = new float[symbolCount]; generators = new FrequencyIntGenerator[symbolCount]; for (int i = 0; i < symbolCount; i++) { for (int j = 0; j < symbolCount; j++) { initialFrequencies[j] += frequencies[i][j]; } generators[i] = new FrequencyIntGenerator(frequencies[i]); } var initialGenerator = new FrequencyIntGenerator(initialFrequencies); lastSymbol = initialGenerator.Next(); }