0

我打算对真实数据进行模拟,即以不规则的时间间隔生成数据。下面是我在 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)彼此不同。

4

2 回答 2

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
于 2016-12-28T04:10:59.723 回答
0

模拟以不规则间隔到达的数据应该不难。但是,您不会在数据点之间添加任何延迟(除了代码执行时间),因此您可能希望显式添加它们。例如,此代码将运行 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()
于 2016-12-28T04:13:53.827 回答