Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Re: Bingo Challenge

by CharlesClarkson (Curate)
on May 20, 2002 at 02:56 UTC ( [id://167761]=note: print w/replies, xml ) Need Help??


in reply to Re: Bingo Challenge
in thread Bingo Challenge

You could speed things by shuffling @words right before the two inner loops.

foreach my $i (1..$cards) { my %seen; . . . for my $x (1..4) { for my $y (1..4) { my $word; while (1) { my $index = rand(@words); $word = $words[$index]; if (!$seen{$word}) { $seen{$word}++; last; } } . . .
becomes:
use Algorithm::Numerical::Shuffle qw /shuffle/; . . . foreach my $i (1..$cards) { . . . @words = shuffle @words; for my $x (1..4) { for my $y (1..4) { my $word = shift @words; . . .

HTH,
Charles K. Clarkson
Clarkson Energy Homes, Inc.

Replies are listed 'Best First'.
Re: Re: Re: Bingo Challenge
by Matts (Deacon) on May 20, 2002 at 06:47 UTC
    Have you benchmarked that to see if it's faster?

    My suspicion would be that for large data sets it would be, but for smaller ones my naive rand() implementation would be quickest.

      Have you benchmarked that to see if it's faster?

      No, I used logic. (which is why I said it could be faster.) A shuffling algorithm takes the same time to shuffle on each pass. It's really just randomizing the array indexes. The idiom you were using varies each time through. The less words left, the longer it will take to produce an unchosen word. My thought was, perhaps you were unaware of shuffling or its application here.


      HTH,
      Charles K. Clarkson
      Clarkson Energy Homes, Inc.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (7)
As of 2024-04-25 08:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found