package nl.fontys.sofa.limo.domain.component.procedure.value;
import com.google.gson.annotations.Expose;
import java.util.Random;
/**
* Single value for a process object.
*
* @author Dominik Kaisers {@literal <d.kaisers@student.fontys.nl>}
*/
public class RangeValue implements Value {
/**
* Random Number Generator.
*/
@Expose private static Random rng;
@Expose private double min;
@Expose private double max;
public RangeValue() {
this(0, 1);
}
public RangeValue(double max) {
this(0, max);
}
public RangeValue(double min, double max) {
this.min = min;
this.max = max;
}
public void setMin(double min) {
this.min = min;
}
public void setMax(double max) {
this.max = max;
}
@Override
public double getValue() {
return getRandomNumber(this.min, this.max);
}
@Override
public double getMin() {
return this.min;
}
@Override
public double getMax() {
return this.max;
}
/**
* Returns a random double in the specified range.
*
* @param min Minimal value.
* @param max Maximal value.
* @return Double between min and max.
*/
private double getRandomNumber(double min, double max) {
if (rng == null) {
rng = new Random();
}
return min + (max - min) * rng.nextDouble();
}
@Override
public String toString() {
return min + " <-> " + max;
}
}