static L splitIntoRandomRanges(int approximateNumberOfRanges, IntRange base) { int i = base.start; new L out; double avgLength = doubleRatio(l(base), approximateNumberOfRanges); while (i < base.end) { int j = i+max(1, iround(random(avgLength*2))); out.add(intRange(i, j)); j = i; } ret out; }