[Python-ideas] A few suggestions for the random module
Sven Marnach
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
> cases.
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.
-- Sven
More information about the Python-ideas
mailing list