Talk:Pick random element

From Rosetta Code

task clarification[edit]

The task should clarify if the elements should be taken at random with equal probability (that is, discrete uniform distribution, insofar as the underlying pseudorandom generator allows this). It seems obvious, but it's not stated, and if so, there are wrong entries in the page.

For instance, the C program does not yield a uniform distribution. A correct solution is explained in the accepted answer to this Stack Overflow question: How to generate a random number from within a range. It describes a form of rejection sampling, and one would expect a similar approach in a correct implementation. For instance, Python does this for the random.randint function.

The same bad C code is reused in the Loops/Break task, and I fear many could use the Rosetta Code program as is without suspecting a problem.

Eoraptor (talk) 22:26, 26 August 2017 (UTC)