diff --git a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/service/ThermostatService.java b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/service/ThermostatService.java index 0fea6b0..ad98717 100644 --- a/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/service/ThermostatService.java +++ b/src/main/java/ch/usi/inf/sa4/sanmarinoes/smarthut/service/ThermostatService.java @@ -5,6 +5,7 @@ import ch.usi.inf.sa4.sanmarinoes.smarthut.models.ThermostatRepository; import ch.usi.inf.sa4.sanmarinoes.smarthut.socket.SensorSocketEndpoint; import ch.usi.inf.sa4.sanmarinoes.smarthut.utils.Utils; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; import java.util.Optional; import java.util.Random; @@ -38,12 +39,18 @@ public class ThermostatService { private void randomJitter(Thermostat thermostat) { - double x; - x = - (ran.nextInt(thermostat.getTypical().intValue()) + thermostat.getErr().intValue()) - * 0.975 - + 1; - updateValueForThermostat(thermostat, BigDecimal.valueOf(x)); + BigDecimal x = + thermostat + .getTypical() + .subtract( + thermostat + .getErr() + .divide(BigDecimal.valueOf(2), RoundingMode.CEILING)) + .add( + BigDecimal.valueOf( + ran.nextDouble() * thermostat.getErr().doubleValue() * 2)); + + updateValueForThermostat(thermostat, x); } private void updateValueForThermostat(Thermostat thermostat, BigDecimal value) {