#!/usr/bin/perl

# $dist = weight_to_dist( \%weight )
#    Convert a weighted order to a distribution.
sub weight_to_dist {
    my ($weights) = shift;
    my ($total_weight, %dist) = (0);

    foreach (values %$weights) { $total_weight += $_ }

    while ( my ($key, $value) = each %$weights ) {
        $dist{$key} = $value / $total_weight;
    }
    return \%dist;
}

%smartie_weights = ( orange => 3, green => 10, pink => 8, brown => 10,
		    tan => 0, red => 6, blue => 11, yellow => 7,
		    purple => 5);

$distribution = weight_to_dist( \%smartie_weights );

while ( ($key, $value) = each %$distribution ) {
    print "$key = $value\n";
}

