|
|
@@ -30,16 +30,18 @@ public class FixedWaterLevelGenerator {
|
|
|
|
|
|
private static final Map<String, Double> DEVICE_LEVEL_MAP = new ConcurrentHashMap<>();
|
|
|
|
|
|
- private static final double MIN_VALUE = 0.03;
|
|
|
- private static final double MAX_VALUE = 0.06;
|
|
|
+ private static final double MIN_VALUE = 0.02;
|
|
|
+ private static final double MAX_VALUE = 0.05;
|
|
|
|
|
|
public static double getSensorValue(String deviceId) {
|
|
|
return DEVICE_LEVEL_MAP.computeIfAbsent(deviceId, FixedWaterLevelGenerator::computeFixedValue);
|
|
|
}
|
|
|
|
|
|
private static double computeFixedValue(String deviceId) {
|
|
|
- long seed = deviceId.hashCode() & 0xFFFFFFFFL;
|
|
|
+ // 乘以一个大的质数,打乱原本连续ID的哈希值分布
|
|
|
+ long seed = (deviceId.hashCode() * 2654435761L) & 0xFFFFFFFFL;
|
|
|
Random random = new Random(seed);
|
|
|
+
|
|
|
double value = MIN_VALUE + random.nextDouble() * (MAX_VALUE - MIN_VALUE);
|
|
|
log.info("生成设备[{}]的固定水位值:{}", deviceId, value);
|
|
|
return Math.round(value * 1000) / 1000.0;
|