in reply to Random Hash Key according to key frequency

A one-liner.

Probably wouldn't win any prizes for efficiency, but scrunched up, it might come in handy in a golf-tournement someday.

my $choice = do {@_ = (); @_ = (@_, map{ ($_->[0]) x $_->[1] } [$a,$b] +) while ($a,$b)= each %hash; $_[rand @_]};

And to prove it works, a one-line test suit.

perl -e"%h=(a=>200,b=>20,c=>2);$t{do{@_=();@_=(@_,map{($_->[0])x$_->[1 +]}[$a,$b]) while($a,$b)=each%h;$_[rand@_]}}++ for 1..1000;print%t;" a901b86c13

Note: I added an unnecessary space to prevent PM from wrapping it at a less convenient place. It (just) fits on one line on my command line.


Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.