]> granicus.if.org Git - python/commitdiff
SF bug #753602: random.sample not properly documented
authorRaymond Hettinger <python@rcn.com>
Fri, 13 Jun 2003 07:01:51 +0000 (07:01 +0000)
committerRaymond Hettinger <python@rcn.com>
Fri, 13 Jun 2003 07:01:51 +0000 (07:01 +0000)
The docs were fine but the "int=int" in the function call was both
ugly and confusing.  Moved it inside the body of the function definition.

Lib/random.py

index 3c05086dfc5457b0148be5251905443b76dedd41..defddbede9850d5b859a92c0394e84ec7ac481b9 100644 (file)
@@ -207,7 +207,7 @@ class Random(_random.Random):
             j = int(random() * (i+1))
             x[i], x[j] = x[j], x[i]
 
-    def sample(self, population, k, int=int):
+    def sample(self, population, k):
         """Chooses k unique random elements from a population sequence.
 
         Returns a new list containing elements from the population while
@@ -240,19 +240,20 @@ class Random(_random.Random):
         if not 0 <= k <= n:
             raise ValueError, "sample larger than population"
         random = self.random
+        _int = int
         result = [None] * k
         if n < 6 * k:     # if n len list takes less space than a k len dict
             pool = list(population)
             for i in xrange(k):         # invariant:  non-selected at [0,n-i)
-                j = int(random() * (n-i))
+                j = _int(random() * (n-i))
                 result[i] = pool[j]
                 pool[j] = pool[n-i-1]   # move non-selected item into vacancy
         else:
             selected = {}
             for i in xrange(k):
-                j = int(random() * n)
+                j = _int(random() * n)
                 while j in selected:
-                    j = int(random() * n)
+                    j = _int(random() * n)
                 result[i] = selected[j] = population[j]
         return result