summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2013-02-10 14:32:22 (GMT)
committerBenjamin Peterson <benjamin@python.org>2013-02-10 14:32:22 (GMT)
commit8b466c99329c0d422a48acfae0c20ec1e76ef314 (patch)
treee7c8e9d09315bcca4cccead6fe864c294ffee319
parent1ef876cd28aa2f76edffb6e4d209c6a49b5705ef (diff)
parent1b901baee592edfdf62de2302d786bc8334f65b1 (diff)
downloadcpython-8b466c99329c0d422a48acfae0c20ec1e76ef314.zip
cpython-8b466c99329c0d422a48acfae0c20ec1e76ef314.tar.gz
cpython-8b466c99329c0d422a48acfae0c20ec1e76ef314.tar.bz2
merge heads
-rw-r--r--Lib/random.py4
-rw-r--r--Lib/test/test_random.py14
-rw-r--r--Misc/NEWS3
3 files changed, 19 insertions, 2 deletions
diff --git a/Lib/random.py b/Lib/random.py
index 2ad3809..0e67ddb 100644
--- a/Lib/random.py
+++ b/Lib/random.py
@@ -450,9 +450,9 @@ class Random(_random.Random):
u3 = random()
if u3 > 0.5:
- theta = (mu % TWOPI) + _acos(f)
+ theta = (mu + _acos(f)) % TWOPI
else:
- theta = (mu % TWOPI) - _acos(f)
+ theta = (mu - _acos(f)) % TWOPI
return theta
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py
index a9aec70..007fcb0 100644
--- a/Lib/test/test_random.py
+++ b/Lib/test/test_random.py
@@ -512,6 +512,20 @@ class TestDistributions(unittest.TestCase):
self.assertAlmostEqual(s1/N, mu, places=2)
self.assertAlmostEqual(s2/(N-1), sigmasqrd, places=2)
+ def test_von_mises_range(self):
+ # Issue 17149: von mises variates were not consistently in the
+ # range [0, 2*PI].
+ g = random.Random()
+ N = 100
+ for mu in 0.0, 0.1, 3.1, 6.2:
+ for kappa in 0.0, 2.3, 500.0:
+ for _ in range(N):
+ sample = g.vonmisesvariate(mu, kappa)
+ self.assertTrue(
+ 0 <= sample <= random.TWOPI,
+ msg=("vonmisesvariate({}, {}) produced a result {} out"
+ " of range [0, 2*pi]").format(mu, kappa, sample))
+
class TestModule(unittest.TestCase):
def testMagicConstants(self):
self.assertAlmostEqual(random.NV_MAGICCONST, 1.71552776992141)
diff --git a/Misc/NEWS b/Misc/NEWS
index 0a060c1..2cfd484 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -247,6 +247,9 @@ Core and Builtins
Library
-------
+- Issue #17149: Fix random.vonmisesvariate to always return results in
+ [0, 2*math.pi].
+
- Issue #1470548: XMLGenerator now works with binary output streams.
- Issue #6975: os.path.realpath() now correctly resolves multiple nested