Advertisement
AmCholadawan

levyrandom_function

Mar 6th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.19 KB | None | 0 0
  1. import random
  2. from datetime import datetime
  3. from scipy.stats import levy
  4.  
  5. random.seed(datetime.now())
  6.  
  7. def direction(previous_direction):
  8.     """pick an initial random direction with uniform distribution"""
  9.     directions = ['+1', '-1']
  10.     if previous_direction == '0':
  11.         direction_idx = random.randint(0, 1)
  12.     elif previous_direction == '+1':
  13.         direction_idx = 0
  14.     elif previous_direction == '-1':
  15.         direction_idx = 1
  16.  
  17.     #direction = directions[direction_idx]
  18.  
  19.     # custom parameters
  20.     loc = 0
  21.     scale = 1
  22.     switch_threshold = 50
  23.  
  24.     """direction inversion using a random pick from levy distribution"""
  25.     r = levy.rvs(loc, scale)  #generate random number with levy distribution
  26.  
  27.     # use > to invert direction on tail
  28.     # use < to invert direction on head
  29.     if r > switch_threshold:
  30.         direction_idx = 1 if direction_idx==0 else 0
  31.         #print(str(r)+'\tinverted direction => '+directions[direction_idx])
  32.     #else:
  33.         #print(str(r)+'\t'+directions[direction_idx])
  34.  
  35.     #print(directions[direction_idx])
  36.  
  37.     return(directions[direction_idx]) #returns the direction the function has chosen as a string of either +1 or -1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement