in reply to Random data generation.
This seems to work, if I've understood correctly.
use strict; use warnings; use 5.010; say genString( 12, ( q{a} .. q{f} ) ); say genString( 20, ( q{a} .. q{c} ) ); say genString( 20, ( q{a} .. q{b} ) ); sub genString { my( $len, @set ) = @_; my $string = q{}; for ( 1 .. $len ) { if ( $string =~ m{(.)\1$} ) { my $let; do { $let = $set[ int rand @set ] } until $let ne $1; $string .= $let; } else { $string .= $set[ int rand @set ]; } } return $string; }
The output.
bceffcedefda bccbbcaabbccacabbcaa abaabbaabaabababbabb
You would need to add a test to prevent an endless loop if given a set with only one member.
I hope this is of interest.
Cheers,
JohnGG
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Random data generation.
by BrowserUk (Patriarch) on Jun 27, 2010 at 15:21 UTC | |
by almut (Canon) on Jun 27, 2010 at 18:27 UTC | |
by BrowserUk (Patriarch) on Jun 27, 2010 at 18:59 UTC | |
by salva (Canon) on Jun 28, 2010 at 10:16 UTC | |
by BrowserUk (Patriarch) on Jun 28, 2010 at 11:48 UTC | |
| |
by furry_marmot (Pilgrim) on Jun 29, 2010 at 17:48 UTC | |
|