对于点击流模拟,我需要生成随机分布的时间戳序列。
每个序列应该:
- 在sim_start和sim_end之间开始和结束,
- 有hit_count个时间戳
对于点击流模拟,我需要生成随机分布的时间戳序列。
每个序列应该:
计算机有不同的存储时间数据的方法。例如,R 使用日期时间类POSIXlt
和POSIXct
. 从文档
类“POSIXct”表示自 1970 年初(在 UTC 时区中)以来的(有符号)秒数,作为数字向量。
所以时间存储为秒数
Sys.time()
## [1] "2017-02-03 10:34:35 CET"
as.numeric(Sys.time())
## [1] 1486114478
这意味着如果你想对时间戳进行采样,那么你只需要从到采样值(从选择的原点开始的最大秒数),然后将它们转换为时间戳,例如
u <- runif(10, 0, 60) # "noise" to add or subtract from some timepoint
as.POSIXlt(u, origin = "2017-02-03 08:00:00") # sample 60 seconds starting from this origin (i.e. time 0)from this origin (i.e. time 0)
## [1] "2017-02-03 09:00:44 CET" "2017-02-03 09:00:30 CET" "2017-02-03 09:00:06 CET" "2017-02-03 09:00:12 CET" "2017-02-03 09:00:36 CET"
## [6] "2017-02-03 09:00:16 CET" "2017-02-03 09:00:18 CET" "2017-02-03 09:00:34 CET" "2017-02-03 09:00:22 CET" "2017-02-03 09:00:35 CET"
在 R 之外,您还可以通过采样一些值并从=NOW()
Excel 或systime
数据库等中的某个时间对象中添加(或减去)它们来遵循这样的过程。
请注意,如果您从不同的分布(例如下例中的正态分布)采样,此过程使您能够从非均匀分布的时间中采样。
hist(as.POSIXlt("2017-02-03 08:00:00") + rnorm(1e6, 0, 60*60), 100)