protected double[] randomSubRange(double boundStart,double boundLen){
  if (boundLen >= 3 && usually()) {
    int intBoundStart=(int)Math.ceil(boundStart);
    int intBoundEnd=(int)(boundStart + boundLen);
    int intBoundLen=intBoundEnd - intBoundStart;
    int newLen=(int)randomGaussianMeanMax(intBoundLen / 16.0,intBoundLen);
    int newStart=intBoundStart + randomInt(intBoundLen - newLen);
    return new double[]{newStart,newLen};
  }
 else {
    double newLen=randomGaussianMeanMax(boundLen / 16,boundLen);
    double newStart=boundStart + (boundLen - newLen == 0 ? 0 : (randomDouble() % (boundLen - newLen)));
    return new double[]{newStart,newLen};
  }
}

protected double [ ] randomSubRange ( double boundStart , double boundLen ) { if ( boundLen >= 3 && usually ( ) ) { int intBoundStart = ( int ) Math . ceil ( boundStart ) ; int intBoundEnd = ( int ) ( boundStart + boundLen ) ; int intBoundLen = intBoundEnd - intBoundStart ; int newLen = ( int ) randomGaussianMeanMax ( intBoundLen / 16.0 , intBoundLen ) ; int newStart = intBoundStart + randomInt ( intBoundLen - newLen ) ; return new double [ ] { newStart , newLen } ; } else { double newLen = randomGaussianMeanMax ( boundLen / 16 , boundLen ) ; double newStart = boundStart + ( boundLen - newLen == 0 ? 0 : ( randomDouble ( ) % ( boundLen - newLen ) ) ) ; return new double [ ] { newStart , newLen } ; } }
returns new minstart and new length that is inside the range specified by the arguments .
