// Найти коды. public static void FigureEncoding(EntropyData ed) { symbols = EntropyDataToSymbols(ed); symbols = symbols.OrderByDescending(s => s.Probability).ToList(); symbols = CalculateSymbolsCodes(symbols); map = new Dictionary <char, string>(); symbols.ForEach(sym => map.Add(sym.Name, sym.Code)); }
// Расчитать скорость передачи данных public static double Rspeed(EntropyData ed) { double t = 0.0; Random r = new Random(); foreach (var Fr in ed.Frequency) { t += ((0.001 + r.NextDouble() % 0.001) * Fr.Value) * 1000000; } return(ed.Entropy / t); }
// Определение степени близости. public static double HowNear(EntropyData ed) => (MeanCodePerSymbol() / ed.Entropy) - 1.0;
// Конвертировать в необходиымй формат. private static List <Symbol> EntropyDataToSymbols(EntropyData ed) => ed.Frequency.Select(t => new Symbol(t.Key, t.Value)).ToList();