lokiloki has asked for the wisdom of the Perl Monks concerning the following question:
And here are the results...#!/usr/bin/perl srand(time); #option 1 my @a = ("b","c","d","e","f","g","h","i","j"); my $a = "aaaaaaaaaaaaaaaaaaaaaa"; $a =~ s/a/$a[int(rand(@a))]/g; print "\noption 1:\n$a\n"; #option 2 my @b = ("b","c","d","e","f","g","h","i","j"); my $b = "bbbbbbbbbbbbbbbbbbbbb"; $b =~ s/b/randme()/ge; print "\noption 2:\n$b\n"; sub randme { return $b[int(rand(@b))]; } #option 3 my @c = ("b","c","d","e","f","g","h","i","j"); my $c = "ccccccccccccccccccc"; for (;;) { last unless $c =~ s/c/$c[int(rand(@c))]/; } print "\noption 3:\n$c\n";
Why on earth won't option 1 return random letters, especially since option 2 will?! This doesn't make logical sense to my poorly constructed brain.option 1: bbbbbbbbbbbbbbbbbbbbbb option 2: gjfcijeeddgbcghddjjff option 3: dbjdbhbhdbedfdeifdb
And is there a better way to do what I am looking to do (the results of 2 or 3 above)?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: randomizing global replacement
by GrandFather (Saint) on Jan 30, 2007 at 04:04 UTC | |
by lokiloki (Beadle) on Jan 30, 2007 at 04:15 UTC | |
by ysth (Canon) on Jan 30, 2007 at 04:24 UTC | |
by GrandFather (Saint) on Jan 30, 2007 at 04:32 UTC | |
|
Re: randomizing global replacement
by xdg (Monsignor) on Jan 30, 2007 at 04:13 UTC |