From 08ec80113b3b7f7a9eaa3d217494536b63305181 Mon Sep 17 00:00:00 2001 From: Zackery Spytz Date: Tue, 15 Feb 2022 15:12:15 -0800 Subject: [PATCH] bpo-46737: Add default arguments to random.gauss and normalvariate (GH-31360) --- Doc/library/random.rst | 10 ++++++++-- Lib/random.py | 4 ++-- Lib/test/test_random.py | 4 ++++ .../Library/2022-02-15-07-39-43.bpo-46737.6Pnblt.rst | 2 ++ 4 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2022-02-15-07-39-43.bpo-46737.6Pnblt.rst diff --git a/Doc/library/random.rst b/Doc/library/random.rst index da4a4f61e45677..96c6300ea16f58 100644 --- a/Doc/library/random.rst +++ b/Doc/library/random.rst @@ -320,7 +320,7 @@ be found in any statistics text. math.gamma(alpha) * beta ** alpha -.. function:: gauss(mu, sigma) +.. function:: gauss(mu=0.0, sigma=1.0) Normal distribution, also called the Gaussian distribution. *mu* is the mean, and *sigma* is the standard deviation. This is slightly faster than @@ -333,6 +333,9 @@ be found in any statistics text. number generator. 2) Put locks around all calls. 3) Use the slower, but thread-safe :func:`normalvariate` function instead. + .. versionchanged:: 3.11 + *mu* and *sigma* now have default arguments. + .. function:: lognormvariate(mu, sigma) @@ -342,10 +345,13 @@ be found in any statistics text. zero. -.. function:: normalvariate(mu, sigma) +.. function:: normalvariate(mu=0.0, sigma=1.0) Normal distribution. *mu* is the mean, and *sigma* is the standard deviation. + .. versionchanged:: 3.11 + *mu* and *sigma* now have default arguments. + .. function:: vonmisesvariate(mu, kappa) diff --git a/Lib/random.py b/Lib/random.py index 6d7b617e33a300..1f3530e880fce2 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -538,7 +538,7 @@ def triangular(self, low=0.0, high=1.0, mode=None): low, high = high, low return low + (high - low) * _sqrt(u * c) - def normalvariate(self, mu, sigma): + def normalvariate(self, mu=0.0, sigma=1.0): """Normal distribution. mu is the mean, and sigma is the standard deviation. @@ -559,7 +559,7 @@ def normalvariate(self, mu, sigma): break return mu + z * sigma - def gauss(self, mu, sigma): + def gauss(self, mu=0.0, sigma=1.0): """Gaussian distribution. mu is the mean, and sigma is the standard deviation. This is diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py index 5b066d23dd3fd6..32e7868ba4de76 100644 --- a/Lib/test/test_random.py +++ b/Lib/test/test_random.py @@ -409,6 +409,10 @@ def test_randbytes(self): self.assertRaises(ValueError, self.gen.randbytes, -1) self.assertRaises(TypeError, self.gen.randbytes, 1.0) + def test_mu_sigma_default_args(self): + self.assertIsInstance(self.gen.normalvariate(), float) + self.assertIsInstance(self.gen.gauss(), float) + try: random.SystemRandom().random() diff --git a/Misc/NEWS.d/next/Library/2022-02-15-07-39-43.bpo-46737.6Pnblt.rst b/Misc/NEWS.d/next/Library/2022-02-15-07-39-43.bpo-46737.6Pnblt.rst new file mode 100644 index 00000000000000..c3f693aeb759eb --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-02-15-07-39-43.bpo-46737.6Pnblt.rst @@ -0,0 +1,2 @@ +:func:`random.gauss` and :func:`random.normalvariate` now have default +arguments.