my %odds = (a => 0.1, b => 0.5, c => 0.4 ); my @dize = map { ($_) x int(100 * $odds{$_}) } keys %odds; for (1..1000) { print $dize[rand @dize], "\n"; }