That worked Shawn. Thanks. 
 
I'm passing @nums values from an html form; so now my @nums = ($list) where 
$list = 97000,97005,98000,96100,94003 . The rand funtion now interprets $list 
as a string and not integers so the script doesn't works anymore. How do i 
convert values with that list from a string to itegers so that the script will 
work properly? Thanks for any suggestion. 
 
 
 



--- On Mon, 7/28/08, Mr. Shawn H. Corey <[EMAIL PROTECTED]> wrote:

From: Mr. Shawn H. Corey <[EMAIL PROTECTED]>
Subject: Re: rand()
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED], [EMAIL PROTECTED], beginners@perl.org
Date: Monday, July 28, 2008, 12:13 PM

On Mon, 2008-07-28 at 19:02 +0100, Aruna Goke wrote:
> [EMAIL PROTECTED] wrote:
> > On Mon, Jul 28, 2008 at 11:52 PM, Bobby
<[EMAIL PROTECTED]> wrote:
> >> Peng,
> >>
> >>
> >>
> >> Could you give me an example code? I want to randomly select X
numbers of
> >> numbers from the @nums list. For instance, i want to randomly
select 3
> >> numbers from @nums i.e.  10000, 10005, 140000. How would you use
srand to do
> >> this?
> >>
> > 
> > Try the modified code below, it works fine.
> > 
> > use strict;
> > use warnings;
> > my $max=3;
> > my @nums =
("10000","10002","10004","10005","10006","140000","1500000");
> > my @randnum = map { $nums[int rand(@nums)] } 1 .. $max;
> > print "@randnum \n";
> > 
> > 
> 
> #!/usr/bin/perl
> 
> use strict;
> use warnings;
> my $max = 3;
> my @nums =
("10000","10002","10004","10005","10006","140000",
> "1500000",100011, 10001, "100014", "100015",
"100016","1400100", 
> "15010000");
> my @randnum = map { $nums[int rand(@nums)] } 1 .. $max;
> print "@randnum \n";
> 
> The code supplied by peng is right.
> 
> you had duplicates because it was run over a small array.. if the size 
> of the array increases just as above the duplication chance reduced or 
> disappear completely.
> 
> Thanks

Do you mean something like this?

#!/usr/bin/perl

my $max = shift @ARGV || 10;
my @nums = ( 10000, 10002, 10004, 10005, 10006, 140000, 1500000, 100011,
10001, 100014, 100015, 100016, 1400100, 15010000 );

my @randnum = ();
for my $count ( 1 .. $max ){
  push @randnum, splice( @nums, rand( @nums ), 1 );
}
print "@randnum \n";

__END__


-- 
Just my 0.00000002 million dollars worth,
  Shawn

"Where there's duct tape, there's hope."

"Perl is the duct tape of the Internet."
        Hassan Schroeder, Sun's first webmaster


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


      

Reply via email to