in reply to Re: reading a random line from a file
in thread reading a random line from a file

For scalabilities sake I quote perlfaq5 (most of the solutions offerred are redundant and wasteful):

How do I select a random line from a file?

Here's an algorithm from the Camel Book:

srand; rand($.) < 1 && ($line = $_) while <>;

This has a significant advantage in space over reading the whole file in. A simple proof by induction is available upon request if you doubt the algorithm's correctness.

Replies are listed 'Best First'.
Re: Re: Re: reading a random line from a file
by BrowserUk (Patriarch) on Nov 17, 2002 at 20:57 UTC

    Scalability? If the OP only wants to ever read one random line from the file, the FAQ solution is fine.

    If however, he wishes to read a second or subsequent random line, the FAQ solution is far from efficient.


    Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
    Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
    Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
    Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.

Re^3: reading a random line from a file
by Aristotle (Chancellor) on Nov 18, 2002 at 00:12 UTC
    If you haven't, the first call to rand will call srand for you. You shouldn't do that explicitly anymore, since you run the risk of putting the srand call in a tight loop, and then your random numbers won't be very random anymore..

    Makeshifts last the longest.