Re: rand()



On Mon, 2008-07-28 at 19:02 +0100, Aruna Goke wrote:
peng.kyo@xxxxxxxxx wrote:
On Mon, Jul 28, 2008 at 11:52 PM, Bobby <cybercruiserz@xxxxxxxxx> 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

.



Relevant Pages

  • Re: rand()
    ... use strict; ... use warnings; ... if the size of the array increases just as above the duplication chance reduced or disappear completely. ...
    (perl.beginners)
  • Re: rand()
    ... you had duplicates because it was run over a small array.. ... "Perl is the duct tape of the Internet." ...
    (perl.beginners)
  • Re: rand()
    ... In article, Bobby ... How do I use the rand function to print out more than one random number for ... an array? ... print "$randnum \n"; ...
    (perl.beginners)
  • Re: rand()
    ... use warnings; ... print "$randnum \n"; ... for an array? ... You may need srand before the rand function. ...
    (perl.beginners)
  • Re: rand()
    ... Try the modified code below, ... use strict; ... use warnings; ...
    (perl.beginners)