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

14

有没有办法在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
“irregular” 意味着 “unique” 吗?你用时间戳做什么? - dm03514
时间间隔不规则,即两个连续时间戳之间的时间间隔应该是不均匀的,并且应该是唯一的。我正在尝试生成一个随机的不规则采样时间序列。 - user93
1个回答

19

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

  • 你可以生成randrange(60)在0-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

谢谢您的帮助。但我需要时间戳按递增顺序排列。有没有修改上面代码的方法? - user93
欢迎!您可以反转生成的列表,请查看更新,我添加了更多细节。 - user4179775
是的,那就是我尝试过的。完美地运行了。谢谢你。 - user93
有没有任何方法可以根据此基于递增顺序获取时间戳? - PirateApp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接