public static List<FuzzySet> coverRangeWithFuzzySets(Range range, int fuzzySetsCount) { double halfFuzzySetWidth = range.getWidth() / (fuzzySetsCount - 1); List<FuzzySet> fuzzySets = new List<FuzzySet>(); fuzzySets.Add(new FuzzySet(Double.NegativeInfinity, range.getBegin(), range.getBegin() + halfFuzzySetWidth)); for (double a = range.getBegin(); a + 2 * halfFuzzySetWidth <= range.getEnd(); a += halfFuzzySetWidth) { double b = a + halfFuzzySetWidth; double c = b + halfFuzzySetWidth; fuzzySets.Add(new FuzzySet(a, b, c)); } fuzzySets.Add(new FuzzySet(range.getEnd() - halfFuzzySetWidth, range.getEnd(), Double.PositiveInfinity)); return fuzzySets; }
private double randomPoint(Range range) { return range.getBegin() + (random.NextDouble() * range.getWidth()); }