首页 > 解决方案 > 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)

关于如何随机化的任何想法?

标签: pythonrandom

解决方案


你需要一个种子:

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 索引它们。这将允许您为每个任务设置一个特定的开始日期。


推荐阅读