code: @NotNull
      public DoubleStream doubles(final double randomNumberOrigin, final double randomNumberBound) {
          if (randomNumberOrigin >= randomNumberBound) {
              throw new IllegalArgumentException();
          }
          return DoubleStream.generate(new DoubleSupplier() {
  
              private final double bound = randomNumberBound - randomNumberOrigin;
  
              @Override
              public double getAsDouble() {
                  double result = random.nextDouble() * bound + randomNumberOrigin;
                  if (result >= randomNumberBound) {
                      result = Double.longBitsToDouble(Double.doubleToLongBits(randomNumberBound) - 1);
                  }
                  return result;
              }
          });
      }
docs: Returns an effectively unlimited stream of pseudorandom {@code double}
  values, each conforming to the given origin (inclusive) and bound (exclusive)
  
  @param randomNumberOrigin  the origin (inclusive) of each random value
  @param randomNumberBound  the bound (exclusive) of each random value
  @return a stream of pseudorandom {@code double} values,
  each with the given origin (inclusive) and bound (exclusive)
  @throws IllegalArgumentException if {@code randomNumberOrigin}
  is greater than or equal to {@code randomNumberBound}