blob: a30df9fc42cd64ff0a7caf10cac150df558ad7a5 [file]
from typing import Callable
import numpy as np
def generate_random_walk_time_series(
num_datapoints: int,
start_value: float,
step_mean: float,
step_stddev: float,
cumulative: bool = True,
min_value: float = None,
max_value: float = None,
apply: Callable = lambda x: x,
) -> np.array:
random_nums = np.random.normal(step_mean, step_stddev, num_datapoints)
out = []
curr = start_value
for random_num in random_nums:
if cumulative:
curr += random_num
else:
curr = random_num
if min_value is not None:
curr = max(curr, min_value)
if max_value is not None:
curr = min(curr, max_value)
out.append(curr)
return [apply(item) for item in out]