1 + random(20) won't get you numbers between 1 and 20. It will get you numbers between 1 and 20.999.

If you want something between 0.05 and 1, just use

0.05 + random(1-0.05);