如何生成不规则的时间间隔?

问题描述:

我打算做一个真实数据模拟,即以不规则的时间间隔产生数据。下面是我在Python中编写的模拟不规则时间(不是数据)的原型代码,但结果是我的循环运行速度太快,以至于每个生成的“时间”(dat)都是在相同的时间戳产生的。在此代码之上,我打算提供数据集并在这些不规则的时间戳中传入数据。如何生成不规则的时间间隔?

import time,random 

Tadd=0.1 
start=time.time() 
while time.time()<(start+Tadd): 
    x=random.uniform(0,1) 
    if x<0.5: 
     dat=time.time() 
     print dat 
    else: 
     pass 

输出是这样的。

1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 
1482896418.95 

所以我的问题是:

  1. 是否可行或“现实”对我来说,这样的代码吗?或者我最好逐行阅读文本文件。例如阅读第一行过程,阅读第二行过程....我的意图实际上是读取机器人定位的传感器数据。但是,这是最好的模拟。我在想,也许我可以使用一个事件来生成我鼠标的数据。有人可以提供有关如何解决这个问题的见解和建议吗?或者,我最好从模拟环境中直接跳到实际环境并购买超声波传感器。

  2. 或者如果我在正确的轨道上,这是一个足够好的模拟。在这种情况下,我如何让时间间隔变得不那么敏感,以便每个“时间”(dat)与另一个时间不同。

+0

什么时间刻度上的不规则?分,秒,毫秒,微秒等。 – wander95

+0

@ wander95我不是特别确定,但我会认为微秒。 –

+0

使用time.clock(),有时需要使用浮点应用程序时钟捕获非对称模式。硬件仅工作 dsgdfg

您只需生成一个随机数并将其添加到当前时间。这假设你不需要过去的时间。

编辑:现在代码会按递增顺序生成时间戳,间隔平均为1秒。

import time,random 

Tadd=0.1 
start=time.time() 
init = 0 
while time.time()<(start+Tadd): 
    x=random.uniform(init,init+1) 
    dat=time.time()+x 
    init+=1; 
    print dat 

print start, start+Tadd 

不应该很难模拟以不规则间隔到达的数据。但是,您不会在数据点之间添加任何延迟(除了代码执行时间之外),因此您可能希望显式添加它们。例如,此代码将运行5秒钟并以随机间隔打印时间。调整它以匹配数据源不应该很难。

import time 
import random 

run_time = 5 
start = time.time() 
now = time.time() 
while now < start + run_time: 
    print now 
    time.sleep(random.random()) 
    now = time.time()