001/* 002 * Copyright © 2025 CUI-OpenSource-Software (info@cuioss.de) 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package de.cuioss.test.generator.internal.net.java.quickcheck.generator.support; 017 018import de.cuioss.test.generator.internal.net.java.quickcheck.Generator; 019import de.cuioss.test.generator.internal.net.java.quickcheck.generator.distribution.Distribution; 020 021import java.util.Objects; 022 023 024public class DoubleGenerator implements Generator<Double> { 025 026 private final double min; 027 private final double max; 028 private final Distribution distribution; 029 030 public DoubleGenerator() { 031 this(Double.MIN_VALUE, Double.MAX_VALUE); 032 } 033 034 public DoubleGenerator(double min, double max) { 035 this(min, max, Distribution.UNIFORM); 036 } 037 038 public DoubleGenerator(double min, double max, Distribution dist) { 039 if (max < min) { 040 throw new IllegalArgumentException("min"); 041 } 042 Objects.requireNonNull(dist, "dist"); 043 044 this.min = min; 045 this.max = max; 046 this.distribution = dist; 047 } 048 049 @Override 050 public Double next() { 051 return nextDouble(); 052 } 053 054 public double nextDouble() { 055 return this.distribution.nextRandomNumber() * (this.max - this.min) + this.min; 056 } 057 058 @Override 059 public String toString() { 060 return "%s[min=%s, max=%s, distribution=%s".formatted(getClass().getSimpleName(), min, max, distribution); 061 } 062}