#!/usr/bin/perl -l

sub wartosc_oczekiwana {
    my ( $rozklad, $suma ) = (shift, 0);

    while ( ($wynik, $prawd) = each %$rozklad ) {
        $suma += $wynik * $prawd;
    }

    return $suma;
}

sub wartosc_oczekiwana_wazona {
    my ( $rozklad, $suma, $suma_wazona ) = (shift, 0);

    while ( ($wynik, $waga) = each %$rozklad ) {
        $suma += $wynik * $waga;
        $suma_wazona += $waga;
    }

    return $suma/$suma_wazona;
}

print wartosc_oczekiwana( {1=>1/6, 2=>1/6, 3=>1/6, 4=>1/6, 5=>1/6, 6=>1/6} );

print wartosc_oczekiwana( {1=>0.1, 2=>0.1, 3=>0.1, 4=>0.1, 5=>0.3, 6=>0.3} );

print wartosc_oczekiwana_wazona ( { 1=>1, 4=>2, 6=>3 } );
