import random
min_digits = # enter here
max_digits = # enter here
# This is how you can turn the minimum and maximum number of digits into the range for the final number
min_value = 10**(min_digits - 1)
max_value = (10**max_digits) - 1
# Input these values into the randint function
print(random.randint(min_value, max_value))
4条答案
按热度按时间gt0wga4j1#
想到的第一种方法是将所需的位数转换为整数;例如,如果您希望最少有9位数,则该数字的最大值为999,999,999,因为这是最大的9位数;如果您希望最少有2位数,则该数字的最小值为10,因为这是最小的2位数。
计算出这个值后,您可以使用10的幂来计算所需的范围:
并得到该范围内的数值。
但是,你的数字中有很多是9位数,很少是2位数。事实上,你可能会认为随机测试总是产生长数字。为什么?因为9位数是8位数的10倍,8位数是7位数的10倍,以此类推。在这个范围内,2位数是非常罕见的!
如果你想让数字的个数均匀分布,那么就单独生成数字。唯一的诀窍是,你生成的第一个数字不能是零,所以你需要从1-9的范围内生成它。所以我们把它和其他数字分开生成。我们可以使用一个生成器表达式来生成其他数字,把所有的数字组合成一个字符串,然后把它转换成一个整数。
wlp8pajw2#
使用
random.randint()
:nhjlsmyf3#
使用随机范围(启动、停止)。
另外,您可能需要
start = 10 ** 2
或stop = 10 ** 4
之类的表达式来描述具有特定位数的数字。fnx2tebb4#
确保导入math、random和randint模块/库: