#!/usr/bin/perl

sub test_znakow {
    my ($proby, $trafienia, $prawdopodobienstwo) = @_;
    my $zaufanie;
    foreach ($proby..$trafienia) {
        $zaufanie += rozklad_dwumianowy($proby, $_, $prawdopodobienstwo);
    }
    return $zaufanie;
}

if (test_znakow(8, 6, 0.5) <= 0.05) {
    print "Lewy odnosnik jest bardziej popularny. \n";
} else {
    print "Za malo danych aby stwierdzic, \n";
    print "ze lewy odnosnik jest bardziej popularny. \n";
}

# $prawd = rozklad_dwumianowy($n, $k, $p)
#    Zwraca prawdopodobienstwo wystapienia zdarzenia $k razy
#    w $n probach, gdzie prawdopodobienstwo wystapienia pojedynczego
#    zdarzenia to $p.
sub rozklad_dwumianowy {
    my ($n, $k, $p) = @_;

    return(0) if ((($p == 0) && ($k != 0)) || (($p == 1) && ($k != $n)));
    return(1) if ((($p == 1) && ($k == $n)) || (($p == 0) && ($k == 0)));
    return wybierz($n, $k) * $p**$k * (1-$p)**($n-$k);
}

# wybierz($n, $k) to liczba sposobow, na jakie mozna wybrac $k elementow
# ze zbioru n-elementowego, gdzie kolejnosc wyboru nie ma znaczenia.
#
sub wybierz {
    my ($n, $k) = @_;
    my ($wynik, $j) = (1, 1);

    return 0 if $k > $n || $k < 0;
    $k = ($n - $k) if ($n - $k) < $k;

    while ( $j <= $k ) {
        $wynik *= $n--;
        $wynik /= $j++;
    }
    return $wynik;
}


wybierz_prosto {
    my ($n, $k) = @_;
    return permutacja($n, $k) / permutacja($n-$k);
}

