@SuppressWarnings("unchecked") public void _addRandomSampleData(int setCount, int tempCount) throws Exception { long sts = this.minDateTS; long ets = this.maxDateTS; Random ran = new Random(sts); /* init datasets */ if (setCount <= 0) { setCount = 1; } java.util.List<Data> dataSet[] = new java.util.List[setCount]; for (int d = 0; d < dataSet.length; d++) { dataSet[d] = new Vector<Data>(); } /* populate random temperature data */ double rangeC = this.maxTempC - this.minTempC; long deltaSize = (ets - sts) / (long) tempCount; long deltaRangeTS = DateTime.HourSeconds(3); long ts = sts + (deltaSize / 2L); double Cs = (ran.nextDouble() * rangeC * 0.10) + (rangeC * 0.05); for (int t = 0; t < tempCount; t++) { double C[] = new double[dataSet.length]; for (int d = 0; d < dataSet.length; d++) { C[d] = (ran.nextDouble() * 7.0) + ((d == 0) ? Cs : C[d - 1]) - 2.5; if (C[d] < this.minTempC) { C[d] = this.minTempC; } if (C[d] > this.maxTempC) { C[d] = this.maxTempC; } dataSet[d].add(new Data(ts, C[d])); } ts = sts + ((long) (t + 1) * deltaSize) + (long) ran.nextInt((int) deltaRangeTS) + (deltaRangeTS / 2L); if (ts > ets) { ts = ets - 1L; } // ts = sts + ((t==0)?DateTime.HourSeconds(1):(long)ran.nextInt((int)(ets - sts))); Cs = C[0]; } /* add datasets */ for (int d = 0; d < dataSet.length; d++) { ListTools.sort(dataSet[d], null); Color color = TEMP_COLOR[d % TEMP_COLOR.length]; this.addDataSet(color, "Temp " + (d + 1), dataSet[d].toArray(new Data[dataSet[d].size()])); } }