From: Raymond Hettinger <python@rcn.com>
Date: Mon, 21 Nov 2016 22:34:33 +0000 (-0800)
Subject: Issue 28475:  Improve error message for random.sample() with k < 0. (Contributed... 
X-Git-Tag: v3.6.0b4~11
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bf87126a636bddf2d9a8f432215fe2efb98ba8fe;p=python

Issue 28475:  Improve error message for random.sample() with k < 0. (Contributed by Francisco Couzo).
---

diff --git a/Lib/random.py b/Lib/random.py
index ca90e1459d..49b0f149a5 100644
--- a/Lib/random.py
+++ b/Lib/random.py
@@ -314,7 +314,7 @@ class Random(_random.Random):
         randbelow = self._randbelow
         n = len(population)
         if not 0 <= k <= n:
-            raise ValueError("Sample larger than population")
+            raise ValueError("Sample larger than population or is negative")
         result = [None] * k
         setsize = 21        # size of a small set minus size of an empty list
         if k > 5:
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py
index fd0d2e319e..84a1e831fd 100644
--- a/Lib/test/test_random.py
+++ b/Lib/test/test_random.py
@@ -110,6 +110,7 @@ class TestBasicOps:
         self.assertEqual(self.gen.sample([], 0), [])  # test edge case N==k==0
         # Exception raised if size of sample exceeds that of population
         self.assertRaises(ValueError, self.gen.sample, population, N+1)
+        self.assertRaises(ValueError, self.gen.sample, [], -1)
 
     def test_sample_distribution(self):
         # For the entire allowable range of 0 <= k <= N, validate that