public RandomVariable ToRandomVariable() { IList <string> states = new List <string>(); Dictionary <string, int> stateCount = new Dictionary <string, int>(); foreach (Particle p in particles) { string state = p.State; if (!(states.Contains(state))) { states.Add(state); stateCount[state] = 0; } stateCount[state] = stateCount[state] + 1; } RandomVariable result = new RandomVariable(states); foreach (string state in stateCount.Keys) { result.SetProbabilityOf(state, ((double)stateCount[state] / particles.Count)); } return(result); }