Is there a built-in method to do it? If not how can I do this without costing too much overhead?
Seek to a random position, read a line and discard it, then read another line. The distribution of lines won't be normal, but that doesn't always matter.