Take Tim's advice and have random.sample() support only sequences and sets.

This commit is contained in:
Raymond Hettinger 2008-01-14 01:00:53 +00:00
parent 28de64fd0f
commit 1acde190b2
4 changed files with 22 additions and 49 deletions

View file

@ -84,26 +84,7 @@ class TestBasicOps(unittest.TestCase):
self.gen.sample(tuple('abcdefghijklmnopqrst'), 2)
def test_sample_on_dicts(self):
self.gen.sample(dict.fromkeys('abcdefghijklmnopqrst'), 2)
# SF bug #1460340 -- random.sample can raise KeyError
a = dict.fromkeys(list(range(10)) +
list(range(10,100,2)) +
list(range(100,110)))
self.gen.sample(a, 3)
# A followup to bug #1460340: sampling from a dict could return
# a subset of its keys or of its values, depending on the size of
# the subset requested.
N = 30
d = dict((i, complex(i, i)) for i in range(N))
for k in range(N+1):
samp = self.gen.sample(d, k)
# Verify that we got ints back (keys); the values are complex.
for x in samp:
self.assert_(type(x) is int)
samp.sort()
self.assertEqual(samp, list(range(N)))
self.assertRaises(TypeError, self.gen.sample, dict.fromkeys('abcdef'), 2)
def test_gauss(self):
# Ensure that the seed() method initializes all the hidden state. In