Как я могу генерировать данные случайного обхода между начальными и конечными значениями, не превышая максимальное значение и не опускаясь ниже минимального значения?
Вот моя попытка сделать это, но по какой-то причине иногда серия превышает максимальные или ниже минимальных значений. Кажется, что значения Start и End соблюдаются, но не минимальное и максимальное значение. Как это можно исправить? Также я хотел бы дать стандартное отклонение для колебаний, но не знаю, как это сделать. Я использую randomPerc
для колебаний, но это неправильно, так как вместо этого я хотел бы указать стандартное значение.
import numpy as np
import matplotlib.pyplot as plt
def generateRandomData(length,randomPerc, min,max,start, end):
data_np = (np.random.random(length) - randomPerc).cumsum()
data_np *= (max - min) / (data_np.max() - data_np.min())
data_np += np.linspace(start - data_np[0], end - data_np[-1], len(data_np))
return data_np
randomData=generateRandomData(length = 1000, randomPerc = 0.5, min = 50, max = 100, start = 66, end = 80)
## print values
print("Max Value",randomData.max())
print("Min Value",randomData.min())
print("Start Value",randomData[0])
print("End Value",randomData[-1])
print("Standard deviation",np.std(randomData))
## plot values
plt.figure()
plt.plot(range(randomData.shape[0]), randomData)
plt.show()
plt.close()
Вот простой цикл, который проверяет ряды, которые меньше или больше максимального значения. Это именно то, чего я пытаюсь избежать. Ряд должен быть распределен между заданными пределами для минимальных и максимальных значений.
## generate 1000 series and check if there are any values over the maximum limit or under the minimum limit
for i in range(1000):
randomData = generateRandomData(length = 1000, randomPerc = 0.5, min = 50, max = 100, start = 66, end = 80)
if(randomData.min() < 50):
print(i, "Value Lower than Min limit")
if(randomData.max() > 100):
print(i, "Value Higher than Max limit")
randomPerc
? - person Bill Bell   schedule 26.10.2017randomPerc
— это моя попытка определить, насколько он колеблется, и находится в диапазоне от 0,25 до 0,5. Но вместо этого я хотел бы указать стандартное отклонение или процент от 0 до 1. - person RaduS   schedule 26.10.2017