在Python中创建随机时间戳列表

14 投票
1 回答
45972 浏览
提问于 2025-05-01 14:26

有没有办法在Python中创建一个随机的不规则时间戳列表,并且这些时间戳是严格递增的?比如说:

20/09/2013 13:00        
20/09/2013 13:01        
20/09/2013 13:05        
20/09/2013 13:09        
20/09/2013 13:16        
20/09/2013 13:26   
暂无标签

1 个回答

19

你可以创建一个随机生成器。

  • 你可以生成一个在0到60之间的随机数,使用 randrange(60) 来实现(这个数字可以代表分钟)。

  • 使用 timedelta 来给当前日期加上时间,比如你要处理的日期是 20/09/2013 13:..

  • 创建一个叫 random_date 的生成器,指定一个起始日期,以及你想生成的日期数量。

from random import randrange
import datetime 


def random_date(start,l):
   current = start
   while l >= 0:
      curr = current + datetime.timedelta(minutes=randrange(60))
      yield curr
      l-=1



startDate = datetime.datetime(2013, 9, 20,13,00)

for x in random_date(startDate,10):
  print x.strftime("%d/%m/%y %H:%M")

输出结果:

20/09/13 13:12
20/09/13 13:02
20/09/13 13:50
20/09/13 13:13
20/09/13 13:56
20/09/13 13:40
20/09/13 13:10
20/09/13 13:35
20/09/13 13:37
20/09/13 13:45
20/09/13 13:27

更新

你可以通过把生成的最后一个日期加上一个差值来“欺骗”这个生成器,然后把整个列表反转。你也可以每次添加不同的随机数,以获得你想要的结果。

你的代码看起来会是这样的。

from random import randrange
import datetime 


def random_date(start,l):
   current = start
   while l >= 0:
    current = current + datetime.timedelta(minutes=randrange(10))
    yield current
    l-=1



startDate = datetime.datetime(2013, 9, 20,13,00)


for x in reversed(list(random_date(startDate,10))):
    print x.strftime("%d/%m/%y %H:%M")

输出结果:

20/09/13 13:45
20/09/13 13:36
20/09/13 13:29
20/09/13 13:25
20/09/13 13:20
20/09/13 13:19
20/09/13 13:16
20/09/13 13:16
20/09/13 13:07
20/09/13 13:03
20/09/13 13:01

撰写回答