]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-123968: Fix lower bound for `python -m random --float` (#123971)
authorAnders Kaseorg <andersk@mit.edu>
Thu, 12 Sep 2024 13:54:18 +0000 (06:54 -0700)
committerGitHub <noreply@github.com>
Thu, 12 Sep 2024 13:54:18 +0000 (16:54 +0300)
Lib/random.py
Lib/test/test_random.py
Misc/NEWS.d/next/Library/2024-09-11-19-12-23.gh-issue-123968.OwHON_.rst [new file with mode: 0644]

index f5a482b28dec78c7cc2018b8b179ee93c6f7624e..8b9a270c429e4acbac39a00f2b328cf9902c5679 100644 (file)
@@ -1013,7 +1013,7 @@ def _parse_args(arg_list: list[str] | None):
         help="print a random integer between 1 and N inclusive")
     group.add_argument(
         "-f", "--float", type=float, metavar="N",
-        help="print a random floating-point number between 1 and N inclusive")
+        help="print a random floating-point number between 0 and N inclusive")
     group.add_argument(
         "--test", type=int, const=10_000, nargs="?",
         help=argparse.SUPPRESS)
@@ -1038,7 +1038,7 @@ def main(arg_list: list[str] | None = None) -> int | str:
         return randint(1, args.integer)
 
     if args.float is not None:
-        return uniform(1, args.float)
+        return uniform(0, args.float)
 
     if args.test:
         _test(args.test)
@@ -1055,7 +1055,7 @@ def main(arg_list: list[str] | None = None) -> int | str:
             try:
                 # Is it a float?
                 val = float(val)
-                return uniform(1, val)
+                return uniform(0, val)
             except ValueError:
                 # Split in case of space-separated string: "a b c"
                 return choice(val.split())
index 9a44ab1768656aadcd2f8e104f84f2636c4bc918..51f9193b269eee88ce3d6fafed2bdb2b9ddb4020 100644 (file)
@@ -1433,8 +1433,8 @@ class CommandLineTest(unittest.TestCase):
             ("'a a' 'b b' 'c c'", "b b"),
             ("--integer 5", 4),
             ("5", 4),
-            ("--float 2.5", 2.266632777287572),
-            ("2.5", 2.266632777287572),
+            ("--float 2.5", 2.1110546288126204),
+            ("2.5", 2.1110546288126204),
         ]:
             random.seed(0)
             self.assertEqual(random.main(shlex.split(command)), expected)
diff --git a/Misc/NEWS.d/next/Library/2024-09-11-19-12-23.gh-issue-123968.OwHON_.rst b/Misc/NEWS.d/next/Library/2024-09-11-19-12-23.gh-issue-123968.OwHON_.rst
new file mode 100644 (file)
index 0000000..4d48947
--- /dev/null
@@ -0,0 +1 @@
+Fix the command-line interface for the :mod:`random` module to select floats between 0 and N, not 1 and N.