#!/usr/bin/perl

# $wybor = idealny_rozklad_losowy( $rozklad )
#    Wybranie elementu z rozkladu.
sub idealny_rozklad_losowy {
    my $rozklad = shift;
    my $klucz;

    # Uzyskanie losowej wartosci zmiennoprzecinkowej w zakresie od 0 do 1.
    my $los = rand;

    # Uzycie $los do ustalenia klucza.
    foreach $klucz ( keys %$rozklad ) {
        return $klucz if ($los -= $rozklad->{$klucz}) < 0;
    }
}

%a = (1 => 0.1, 2 => 0.1, 3 => 0.1, 4 => 0.1, 5 => 0.3, 6 => 0.3);

for (1..100) { print idealny_rozklad_losowy(\%a) }
