Генерация случайного значения в диапазоне, который меняется со временем - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь генерировать случайные значения в диапазоне [1800,1600] в течение определенного периода. Этот диапазон очень строг, но мне нужно иметь меньший диапазон, который будет гибким в течение периода.

Примером того, что я ищу, может быть: в течение первых 10 дней выберите случайное значение между [1705,1695] в течение следующих 10 дней выберите случайное число между [1695, 1685]

Однако я бы хотел, чтобы диапазон либо случайно увеличился на 10, либо уменьшился на 10.

Пока что единственный способ, которым я смог это сделать, - это вручную установить диапазон, а затем случайным образом генерировать значения для определенного периода времени с диапазоном. Я бы хотел, чтобы диапазон можно было выбирать случайным образом.

1 Ответ

0 голосов
/ 26 июня 2018

Я сделал снимок проблемы, как вы ее описали. Это сгенерирует случайные числа для n периодов 10 дней.

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

Возможно, вам придется внести небольшие корректировки в зависимости от ваших потребностей. Когда границы выходят за пределы, они остаются прежними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...