import random
|
from datetime import datetime, timedelta
|
class RandomUtil:
|
@staticmethod
|
# 随机生成数字字符串
|
def generate_random_number_string(start: str, end: str) -> str:
|
"""
|
在指定范围内生成一个随机数字字符串。
|
|
:param start: 范围起始值(包含),数字字符串形式
|
:param end: 范围终止值(包含),数字字符串形式
|
:return: 生成的随机数字字符串
|
:raises ValueError: 如果输入的字符串不能转换为数字或者起始值大于终止值
|
"""
|
try:
|
start_num = int(start)
|
end_num = int(end)
|
except ValueError as e:
|
raise ValueError("输入的字符串必须为有效的数字") from e
|
|
if start_num > end_num:
|
raise ValueError("起始值不能大于终止值")
|
|
# 使用 random.randint 生成包含 start_num 和 end_num 的随机数
|
random_number = random.randint(start_num, end_num)
|
return str(random_number)
|
|
# 随机生成年月日
|
def generate_random_date(start_date: str, end_date: str) -> str:
|
"""
|
在指定的年月日范围内随机生成一个日期字符串,格式为 %Y-%m-%d。
|
|
:param start_date: 起始日期字符串,格式为 "YYYY-MM-DD"
|
:param end_date: 结束日期字符串,格式为 "YYYY-MM-DD"
|
:return: 随机生成的日期字符串
|
:raises ValueError: 如果日期格式不正确或者起始日期大于结束日期
|
"""
|
try:
|
start = datetime.strptime(start_date, "%Y-%m-%d")
|
end = datetime.strptime(end_date, "%Y-%m-%d")
|
except ValueError as e:
|
raise ValueError("输入的日期字符串必须为 'YYYY-MM-DD' 格式") from e
|
|
if start > end:
|
raise ValueError("起始日期不能大于结束日期")
|
|
# 计算起始和结束日期之间的天数差
|
delta_days = (end - start).days
|
|
# 随机选择一个偏移天数
|
random_days = random.randint(0, delta_days)
|
|
# 计算随机日期
|
random_date = start + timedelta(days=random_days)
|
return random_date.strftime("%Y-%m-%d")
|
|
# 示例用法
|
if __name__ == '__main__':
|
start = "1000"
|
end = "9999"
|
random_str = RandomUtil.generate_random_number_string(start, end)
|
print("随机生成的数字字符串为:", random_str)
|