This is something that was shared with me here.
newX = enemyUnit.X + cos(random(360)) * random(100)
newY enemyUnit.Y + sin(random(360)) * random(100)
Say your enemy was picking a random point within a 100px radius from itself to move to. This is how you would do that... so maybe..
newX = playerUnit.X + cos(random(360)) * random(100)
newY playerUnit.Y + sin(random(360)) * random(100)
would pick a random point up to this many px from the player..... You might have to play with the numbers though. This could put the enemy 1px away or 100px... you would adjust your range like random(50, 100).. Then they would pick a random point from 50 to 100 px away..
You'll have to use another method if you want these points to be specific... not sure about that kind of math. Also you would have to implement a feature if you wanted the enemies to pick random points around the player that weren't the same... like test all previous checks in a while loop and pick a new location until they aren't the same..
Not sure if this is a better way or not... One thing I do know. If you want your points to be picked cinematically this will not work.