title: Random walk series between start-end values and within minimum/maximum limits
body: <p>How can i generate a random walk data between a start-end values 
   while not passing over the maximum value and not going under the minimum value? </p>
  
  <p>Here is my attempt to do this but for some reason sometimes the series goes over the max or under the min values. It seems that the Start and the End value are respected but not the minimum and the maximum value. How can this be fixed? Also i would like to give the standard deviation for the fluctuations but don't know how. I use a <code>randomPerc</code> for fluctuation but this is wrong as i would like to specify the std instead.  </p>
  
  <pre><code>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()
  </code></pre>
  
  <p>Here is a simple loop which checks for series that go under the minimum or over the maximum value. This is exactly what i am trying to avoid. The series should be distributed between the given limits for min and max values.</p>
  
  <pre><code> ## 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() &lt; 50):
              print(i, "Value Lower than Min limit")
          if(randomData.max() &gt; 100):
              print(i, "Value Higher than Max limit")
  </code></pre>