示例#1
0
        // Найти коды.
        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));
        }
示例#2
0
        // Расчитать скорость передачи данных
        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);
        }
示例#3
0
 // Определение степени близости.
 public static double HowNear(EntropyData ed) => (MeanCodePerSymbol() / ed.Entropy) - 1.0;
示例#4
0
 // Конвертировать в необходиымй формат.
 private static List <Symbol> EntropyDataToSymbols(EntropyData ed) =>
 ed.Frequency.Select(t => new Symbol(t.Key, t.Value)).ToList();