code: public Histogram<T> getHistogram( int numSigmas ) {
          Lock lock = this.getLock().writeLock();
          lock.lock();
          try {
              Histogram<T> hist = new Histogram<T>(this.math, this.values);
              if (numSigmas > 0) {
                  // The 'getMediaValue()' method will reset the current histogram, so don't set it...
                  hist.setStrategy(this.getMedianValue(), this.getStandardDeviation(), numSigmas);
              }
              this.histogram = hist;
              return this.histogram;
          } finally {
              lock.unlock();
          }
      }
docs: Return the histogram of the {@link #getValues() values}. This method is capable of creating two kinds of histograms. The
  first kind is a histogram where all of the buckets are distributed normally and all have the same width. In this case, the
  'numSigmas' should be set to 0. See {@link #getHistogram()}.
  <p>
  The second kind of histogram is more useful when most of the data that is clustered near one value. This histogram is
  focused around the values that are up to 'numSigmas' above and below the {@link #getMedian() median}, and all values
  outside of this range are placed in the first and last bucket.
  </p>
  @param numSigmas the number of standard deviations from the {@link #getMedian() median}, or 0 if the buckets of the
  histogram should be evenly distributed
  @return the histogram
  @see #getHistogram()