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/