Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- from datetime import datetime
- import numpy as np
- random.seed(datetime.now())
- def direction(probability, last_direction):
- if last_direction == [0, 0]:
- """pick an initial random direction with uniform distribution"""
- direction_xy = polarToCartesian(random.randint(0, 7))
- else:
- last_direction = cartesianToPolar(last_direction)
- low_prob = (1 - probability/100) / 7
- directions_p = [low_prob for p in range(7)]
- directions_p[last_direction] = probability/100
- directions_p /= np.sum(directions_p)
- direction_xy = np.random.choice(range(7), p=directions_p)
- direction_xy = polarToCartesian(direction_xy)
- return(direction_xy)
- def polarToCartesian(direction):
- # 0 1 2
- # 7 b 3
- # 6 5 4
- return {
- 0: [-1, -1],
- 1: [-1, 0],
- 2: [-1, +1],
- 3: [ 0, +1],
- 4: [+1, +1],
- 5: [+1, 0],
- 6: [+1, -1],
- 7: [ 0, -1]
- } [direction]
- def cartesianToPolar(direction):
- if direction[0] < 0:
- if direction[1] == -1:
- return 0
- elif direction[1] == 0:
- return 1
- else:
- return 2
- elif direction[0] == 0:
- if direction[1] == -1:
- return 7
- else:
- return 3
- else:
- if direction[1] == -1:
- return 6
- elif direction[1] == 0:
- return 5
- else:
- return 4
- ### TEST
- #for t in range(100):
- # print(direction(50, [1, 0]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement