生成随时间变化的范围内的随机值

时间:2018-06-26 18:46:03

标签: python date datetime random

我正在尝试在特定时期内生成[1800,1600]范围内的随机值。这个范围非常严格,但是我需要有一个较小的范围,该范围在这段时间内可以灵活地调整。

我要寻找的示例是: 对于前10天,请在[1705,1695]之间选择一个随机值 在接下来的10天中,选择[1695,1685]之间的随机数

但是,我希望范围随机增加10或减少10。

到目前为止,我能够做到这一点的唯一方法是手动设置范围,然后在一定时间范围内随机生成值。我希望可以随机选择范围。

1 个答案:

答案 0 :(得分:1)

正如您所描述的,我已对问题进行了解答。这将在10天的n期间生成随机数。

import numpy as np

n = 10    
lower = 1695 # starting lower bound
upper = 1705 # starting upper bound

min_lower = 1600
max_upper = 1800

values = np.array([])
for period in range(n):
    values = np.append(values, np.random.randint(lower, upper, 10))

    if np.random.randint(2): # attempt to increase bound
        if upper+10 < max_upper: # increase bounds
            lower += 10
            upper += 10
        # else: bounds stay the same
    else: # attempt to decrease bound
        if lower-10 > min_lower: # decrease bounds
            lower -= 10
            upper -= 10
        # else: bounds stay the same

以下是显示在10个长度为10的时间段内生成数字的结果的图。您可以看到每个时间段的范围为10。

Example

您可能需要根据需要进行一些小的调整。当界限达到极限时,它们保持不变。