public ICollection <ISymbol> GetSample(int size) { var sample = new List <ISymbol>(); while (sample.Count < size) { try { var seed = (decimal)_random.NextDouble(); sample.Add(_seqProbabilities .Single(p => seed >= p.Value.Item1 && seed < p.Value.Item2).Key); } catch { throw new IndexOutOfRangeException("Something went wrong. Sorry. Please try again. Problem with the sample generation."); } } return(sample); }