У меня есть таблица с числовыми значениями, хранящимися как decimal(8,3)
в MySQL. Я вытащил эти значения для отображения, однако мне нужно сначала немного изменить значения (с возмущение данных). Например:
a: 0.123
b: 0.011
c: 0.003
будет возмущен и показан как:
a: 0.125
b: 0.010
c: 0.001
если бы я нарисовал тот же отчет во второй раз, я мог бы получить что-то вроде:
a: 0.119
b: 0.005
c: 0.005
Идея состоит в том, чтобы сделать возмущение непредсказуемым от значения к значению, сохраняя значение близко к оригиналу. Может увеличиваться на 0,001, а затем уменьшаться на 0,003 при следующем значении.
Ни в коем случае значение не должно становиться отрицательным или равным 0. Если у меня есть .001, это должно быть случайным образом возмущено вверх, чтобы впоследствии оно было .001 или выше.
В настоящее время я использую это, чтобы возмущать значения больше 1, и это работает нормально. Когда передано значение ниже 1, мои возмущенные значения не имеют смысла.
$perturbed = $v + ( mt_rand( $v*(-1), 40) / 100 );
Например, если $ v равен .04, $ возмущенный может в конечном итоге быть .99, что статистически выходит за пределы диапазона для данного $ v.
Набор данных является относительно большим, поэтому любое решение не требует больших затрат вычислительной мощности.
Задача ещё не решена.
Других решений пока нет …