[Python-ideas] A few suggestions for the random module
sven at marnach.net
Sat Jun 25 20:37:16 CEST 2011
Raymond Hettinger schrieb am Fr, 24. Jun 2011, um 00:02:20 +0200:
> 1. random.expovariate(lambd)
> This seems reasonable
When I started to prepare a patch, I noticed you already implemented
this one. Thanks!
> 2. random.sample(population, k)
> This may be a unnecessary optimization (not worth the complexity),
> but I will look at it further.
The main point was the generalization to arbitrary iterables, the
reduced memory usage being just a positive side effect. I'm not
really convinced of the idea any more since it doesn't really fit well
in the current `sample()` implementation. If someone wants to save
some memory in the case that k is not much less than n, she can just
copy the population, `shuffle()` it and delete the unneeded part.
The only question that remains is if it is worthwhile to introduce a
new function for this purpose. While there definitely are use cases
for the algorithm, I simply don't know if they are common enough to
justify a function in the standard library.
> 3. random.choice(seq)
> It could be generalized to arbitrary iterables (Bentley provides an
> example of how to do this) but it is fragile (i.e. falls apart badly with
> weak random number generators) and doesn't correspond well with real use
Again, there definitely are real world use cases. If the above
mentioned function would be introduced, this one would simply be the
special case k = 1.
More information about the Python-ideas