如何基于python中另一个随机选择的范围生成一组随机数
我需要编写一个程序,生成一个名为file_size的随机整数,该整数介于4和7之间(含4和7),然后打印它们,但每个随机整数必须介于5和19之间(含5和19),并且是奇数。副本可以。总而言之,如果文件大小为6,则必须打印5到19之间的6个奇数。顺便说一下,我正在使用Python 3。这就是我到目前为止所做的:如何基于python中另一个随机选择的范围生成一组随机数,python,loops,random,Python,Loops,Random,我需要编写一个程序,生成一个名为file_size的随机整数,该整数介于4和7之间(含4和7),然后打印它们,但每个随机整数必须介于5和19之间(含5和19),并且是奇数。副本可以。总而言之,如果文件大小为6,则必须打印5到19之间的6个奇数。顺便说一下,我正在使用Python 3。这就是我到目前为止所做的: import random file_size = random.randint(4, 7) print("file_size = ", file_size) for _ in ra
import random
file_size = random.randint(4, 7)
print("file_size = ", file_size)
for _ in range(file_size):
random_num = random.randint(5, 19)
if random_num % 2 ==1:
print(random_num)
示例运行的输出如下所示:
file_size = 5
19
11
15
7
这显然不是我要找的。请帮助。您当前的代码非常接近。只需使用步骤为2的
randrange
,而不是randint
。这不会生成任何偶数,因此您将获得正确数量的奇数。但是,您需要将上限增加1,因为randint
包含上限,而randrange
不包含上限,就像内置的range
函数一样
random_num = random.randrange(5, 20, 2)
您当前的代码非常接近。只需使用步骤为2的
randrange
,而不是randint
。这不会生成任何偶数,因此您将获得正确数量的奇数。但是,您需要将上限增加1,因为randint
包含上限,而randrange
不包含上限,就像内置的range
函数一样
random_num = random.randrange(5, 20, 2)
您将循环运行
file\u size
次,但仅当随机生成的数字为奇数时才打印,这意味着您通常会得到比预期更少的结果。要获得随机奇数,您需要不断生成随机值,直到得到一个奇数,例如:
def random_odd(low, high):
while True:
ret = random.randint(low, high)
if ret % 2 == 1:
return ret
您可以根据需要对此进行调整,并编写单元测试来验证预期的随机生成行为。然后,在文件大小代码中使用此帮助程序:
for _ in range(file_size):
print(random_odd(5, 19))
正如horns所建议的,它确实是您想要的函数,但通常情况下,helper函数模式是一个很好的后续模式-将代码的职责划分为多个部分,这样每个部分在概念上都更简单,并且可以独立验证。您正在循环运行文件大小
次,但只有当随机生成的数字为奇数时才会打印,这意味着您通常会得到比预期更少的结果。要获得随机奇数,您需要不断生成随机值,直到得到一个奇数,例如:
def random_odd(low, high):
while True:
ret = random.randint(low, high)
if ret % 2 == 1:
return ret
您可以根据需要对此进行调整,并编写单元测试来验证预期的随机生成行为。然后,在文件大小代码中使用此帮助程序:
for _ in range(file_size):
print(random_odd(5, 19))
正如horns所建议的,这确实是您想要的函数,但通常情况下,helper函数模式是一个很好的后续模式-将代码的职责划分为多个部分,这样每个部分在概念上都更简单,并且可以独立验证。现在,我不再将编写的数字打印到名为“numbers.txt”的文件中。在另一个文件中,我如何读取numbers.txt的内容,然后在自己的行上打印每个数字,然后打印总和?现在,我将数字写入名为“numbers.txt”的文件,而不是打印数字。在另一个文件中,我如何读取numbers.txt的内容,然后在自己的行上打印每个数字,然后打印总和?