gh-123968: Fix lower bound for `python -m random --float` (#123971)

This commit is contained in:
Anders Kaseorg 2024-09-12 06:54:18 -07:00 committed by GitHub
parent 8e99495701
commit a362c41bc9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 6 additions and 5 deletions

View File

@ -1013,7 +1013,7 @@ def _parse_args(arg_list: list[str] | None):
help="print a random integer between 1 and N inclusive") help="print a random integer between 1 and N inclusive")
group.add_argument( group.add_argument(
"-f", "--float", type=float, metavar="N", "-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( group.add_argument(
"--test", type=int, const=10_000, nargs="?", "--test", type=int, const=10_000, nargs="?",
help=argparse.SUPPRESS) help=argparse.SUPPRESS)
@ -1038,7 +1038,7 @@ def main(arg_list: list[str] | None = None) -> int | str:
return randint(1, args.integer) return randint(1, args.integer)
if args.float is not None: if args.float is not None:
return uniform(1, args.float) return uniform(0, args.float)
if args.test: if args.test:
_test(args.test) _test(args.test)
@ -1055,7 +1055,7 @@ def main(arg_list: list[str] | None = None) -> int | str:
try: try:
# Is it a float? # Is it a float?
val = float(val) val = float(val)
return uniform(1, val) return uniform(0, val)
except ValueError: except ValueError:
# Split in case of space-separated string: "a b c" # Split in case of space-separated string: "a b c"
return choice(val.split()) return choice(val.split())

View File

@ -1433,8 +1433,8 @@ class CommandLineTest(unittest.TestCase):
("'a a' 'b b' 'c c'", "b b"), ("'a a' 'b b' 'c c'", "b b"),
("--integer 5", 4), ("--integer 5", 4),
("5", 4), ("5", 4),
("--float 2.5", 2.266632777287572), ("--float 2.5", 2.1110546288126204),
("2.5", 2.266632777287572), ("2.5", 2.1110546288126204),
]: ]:
random.seed(0) random.seed(0)
self.assertEqual(random.main(shlex.split(command)), expected) self.assertEqual(random.main(shlex.split(command)), expected)

View File

@ -0,0 +1 @@
Fix the command-line interface for the :mod:`random` module to select floats between 0 and N, not 1 and N.