python - Python - 生成随机日期以创建甘特序列任务
问题描述
这个想法是根据 python 中的工作负载估计生成随机但有序的日期。
目标是有这样的输出:
Task , Start_date , End_date task1
, 01/06/2020, 05/06/2020
task2, 08/06/2020, 11/06/2020
task3, 12/06/2020, 24 /06/2020
...
所以我开始研究这段代码,但找不到随机化它的方法。
#startdate
start_date = datetime.date(2020, 1, 1)
#enddate
end_date = datetime.date(2020, 2, 1)
time_between_dates = end_date - start_date
days_between_dates = time_between_dates.days
#workload in days
random_number_of_days = random.randrange(days_between_dates)
random_date = start_date + datetime.timedelta(days=random_number_of_days)
关于如何随机化的任何想法?
解决方案
你需要一个种子:
random.seed(a=None)
a 是种子值。如果是 None 则默认使用系统时间。在开始生成随机日期之前添加此行。不要在循环中设置种子,因为这会导致错误。
你可以这样做:
import datetime
import random
# startdate
start_date = datetime.date(2020, 1, 1)
# enddate
end_date = datetime.date(2020, 2, 1)
time_between_dates = end_date - start_date
days_between_dates = time_between_dates.days
#workload in days
random.seed(a=None)
tasks = 10
for i in range(tasks):
random_number_of_days = random.randrange(days_between_dates)
random_date = start_date + datetime.timedelta(days=random_number_of_days)
print("Task" + str(i+1) + "," + str(start_date) + "," + str(random_date))
start_date = random_date # by @Makram
您还需要更改开始日期,除非您希望所有这些都在同一日期开始。
您可以列出开始日期,然后用 i 索引它们。这将允许您为每个任务设置一个特定的开始日期。
推荐阅读
- r - Tukey 是在混合效应 ANCOVA 之后测试斜率差异的最佳方法吗?
- comments - clang-format 打破长长的 doxygen 评论
- python - 如何在pycharm中使用unittest运行多个测试?
- python-3.x - 没有名为“乌龟”的模块
- python - 使昂贵的 Python 数组全局化
- javascript - 循环没有在所有 JSON 数据集上迭代
- mule-studio - AnpointStudio 部署问题
- coldfusion - CFIMAP 错误 - 不允许对已关闭的文件夹执行此操作
- javascript - 我如何煮一个动画菜单,当草书进入时打开并在光标移除时关闭?
- python - 如何根据子类对象在python中设置条件?