public double ProbabilityOf(MarkovNode <T> next) { if (Nexts.ContainsKey(next) == false) { throw new NotImplementedException("one next step only, more than one not implemented yet"); } return(Nexts[next] * 1.0 / Occurrence); }
public MarkovNode <T> AddNext(MarkovNode <T> next) { if (Nexts.ContainsKey(next)) { Nexts[next]++; } else { Nexts.Add(next, 1); } next.Occurrence++; return(this); }
public AppFunc AppFuncBuilder(AppFunc next) { ++AppFuncBuilderCallCount; #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously return(async(IDictionary <string, object> environment) => { Environments.Add(environment); Nexts.Add(next); Action?.Invoke(); if (ChainToNextAppFunc) { next(environment).Wait(); } }); }
public IEnumerable <KeyValuePair <MarkovNode <T>, double> > GetNextsWithProbabilities() { return(Nexts.Select(x => new KeyValuePair <MarkovNode <T>, double>(x.Key, (x.Value * 1.0 / Occurrence))).OrderByDescending(x => x.Value)); }
public IEnumerable <MarkovNode <T> > GetNexts() { return(Nexts.OrderByDescending(x => (x.Value * 1.0 / Occurrence)).Select(x => x.Key)); }