Error:
cannot done. Use a sampling call Reservoir sampling. When it meet a target, directly replace with n%, it has the same probability as the united probability.
Prove:
When we have a size n array and meet (n + 1)th element, so that this element has n / (n + 1) probability to replace the old array and 1 - n / (n + 1) probability to discard the element.
For the old element in the array, it has (1 - n / (n + 1)) + ((n / (n + 1)) * ((n - 1) / n)) = n / (n + 1)
So that the old and new element always keep the same probability for the replacement.
Or check this video