use strict; use warnings; use List::Util qw/min/; sub t { sprintf("%0.0f", shift()*10000) } sub rn { my $e = 1e-6; my $x = rand(); return min(t($x), t($x+$e), t($x-$e)); } srand(42654); print rn(), "\n"; print rn(), "\n"; print rn(), "\n"; print rn(), "\n"; #### 3725 3516 7534 1948 #### min(t($x), t($x+$e), t($x-$e))