> Reservoir sampling is still O(N), and it requires generating a random number for every element.
I agree with your comment in general. Only: you can do better than generate a random number for each element. (Generate a random number to tell you how many elements in the steam to skip.)