in reply to reading a random line from a file

Did you consult the FAQ, "How do I select a random line from a file?"

--
I'm not belgian but I play one on TV.

Replies are listed 'Best First'.
Re: Re: reading a random line from a file
by Anonymous Monk on Nov 17, 2002 at 20:35 UTC
    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.

      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.

      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.