diff --git a/dnn/dump_data.c b/dnn/dump_data.c
index 38e22d34db17f5cb4750f4cc900568846520c24c..3187484fa6896d9e11b4beb8c8818ff7c083b1c1 100644
--- a/dnn/dump_data.c
+++ b/dnn/dump_data.c
@@ -233,14 +233,15 @@ int main(int argc, char **argv) {
     }
     if (count*FRAME_SIZE_5MS>=10000000 && one_pass_completed) break;
     if (training && ++gain_change_count > 2821) {
-      float tmp;
+      float tmp, tmp2;
       speech_gain = pow(10., (-20+(rand()%40))/20.);
       if (rand()%20==0) speech_gain *= .01;
       if (rand()%100==0) speech_gain = 0;
       gain_change_count = 0;
       rand_resp(a_sig, b_sig);
       tmp = (float)rand()/RAND_MAX;
-      noise_std = 10*tmp*tmp;
+      tmp2 = (float)rand()/RAND_MAX;
+      noise_std = -log(tmp)-log(tmp2);
     }
     biquad(x, mem_hp_x, x, b_hp, a_hp, FRAME_SIZE);
     biquad(x, mem_resp_x, x, b_sig, a_sig, FRAME_SIZE);