code: public static long random(TemporalField field, long startInclusive, long endExclusive) {
      long min = field.range().getMinimum();
      long max = field.range().getMaximum();
      checkArgument(startInclusive >= min, "Start must be on or after %s", min);
      checkArgument(endExclusive <= max, "End must be on or before %s", max);
      checkArgument(startInclusive <= endExclusive, "End must be on or after start");
      min = Math.max(startInclusive, field.range().getMinimum());
      max = Math.min(endExclusive, field.range().getMaximum());
      return randomLong(min, max);
    }
docs: Returns a random valid value for the given {@link TemporalField} between <code>
  startInclusive</code> and <code>endExclusive</code>.
  
  @param field the {@link TemporalField} to return a valid value for
  @param startInclusive the smallest value that can be returned
  @param endExclusive the upper bound (not included)
  @return the random value
  @throws IllegalArgumentException if startInclusive is on or before <code>
  TemporalField.range().min()
  </code>, if endExclusive is on or after <code>TemporalField.range().max()</code>, or if
  startInclusive is after after endExclusive