Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: random elements from array - new twist

by PodMaster (Abbot)
on Nov 05, 2002 at 09:55 UTC ( [id://210417]=note: print w/replies, xml ) Need Help??


in reply to random elements from array - new twist

Oh my ... shuffle this, splice that ... how's this?
use strict; BEGIN{eval q{use warnings;}} { my %cache; sub Gimme { my( $arr, $n, $clear, $all ) = @_; my @ret = (); $cache{$arr} = {} if defined $clear or not exists $cache{$arr} +; %cache = () if defined $all; while($n){ my $rand = $$arr[rand@$arr]; unless(exists $cache{$arr}{$rand}){ $n--; $cache{$arr}{$rand}++; push @ret, $rand; } if( scalar %{$cache{$arr}} == @$arr ) { warn "No more unique elements left in $arr"; return @ret; } } return @ret; } } my @array = ( 1..10,'a'..'z',keys %:: ); #my($c1, $c2, $c3, $c4, $c5 ) = Gimme(\@array,5); for(1..10){ print "\n\n=head1 $_\n\n"; print "\t$_\n" for Gimme(\@array, 5); } __END__

____________________________________________________
** The Third rule of perl club is a statement of fact: pod is sexy.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://210417]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (7)
As of 2024-03-28 19:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found