#!/usr/bin/perl

# $wynik = losuj_zmiennoprzecinkowa( $dolny_zakres, $gorny_zakres )
# $wynik = losuj_zmiennoprzecinkowa( $gorny_zakres )
# $wynik = losuj_zmiennoprzecinkowa
#     Zwraca wartosc zmiennoprzecinkowa w zakresie od $dolny_zakres do $gorny_zakres.
#     Zwraca wartosc zmiennoprzecinkowa w zakresie od 1 do $gorny_zakres.
#     Zwraca wartosc zmiennoprzecinkowa w zakresie od 0 do 1.
sub losuj_zmiennoprzecinkowa {
    my ( $dolny_zakres, $gorny_zakres ) = @_;

    # Domyslne ustawienia.
    $dolny_zakres = 0 unless defined $dolny_zakres;
    $gorny_zakres = 1 unless defined $gorny_zakres;

    # Sprawdzenie poprawnosci zakresow.
    ($dolny_zakres,$gorny_zakres) = ($gorny_zakres,$dolny_zakres) if $dolny_zakres > $gorny_zakres;

    return $dolny_zakres + rand ( $gorny_zakres - $dolny_zakres );
}

# Wybranie okreslonej czesci godziny.
$zakres_minut = losuj_zmiennoprzecinkowa( 0, 60 );

# Poniewaz jest to liczba zmiennoprzecinkowa, mozemy ja podzielic
# na mniejsze jednostki czasu:
$minuty        = int( $zakres_minut );
$zakres_sekund = ($zakres_minut - $minuty) * 60;
$sekundy       = int( $zakres_sekund );
$tysieczne     = int( 1000 * ($zakres_sekund - $sekundy) );

printf "wybrano godzine: %02d:%02d.%03d\n", $minuty, $sekundy, $tysieczne;

