Implementing a good AI comes from good observation. May I post the battle between AIs in my game:
People thought those two were two players playing. When I was implementing it, I would often do two things: 1) ask myself what I would do 2) watch two players playing against each other and see the action and response of each.
I'm not very fond of AIs involving statistical or probablistic behavior. Not just it's more work to implement them, but also that's not much how human behavior works. Unless you don't want your AI to look humanly. Thus, I use statistical/probablistic formulas very rarely in my implementation, normaly to make the AI break itself from the current behavior. For example, if the current behavior is "goto x,y", I will make 0.05% of chance to make the behavior change to "observe", a behavior that will check the surrounds and decide what to do next. Humans aren't 100% of the time observing what's in their surround, especially when they are determined to go somewhere.
Also, I like to separate "looks human" from "looks like it's controlled by a player". In my game, "looks like it's controlled by a player" is my choice. In a competitive game, that's the best approach, in my opinion, because you don't want the AI going to the corner, sit, and cry, just to look human. You want the AI to look like it's another player, that knows she/he won't die because of that, but will make some inhuman risky move to save itself. If it was a game driven by a plot, I would want the AI to look humanly, go to a corner, sit, and cry, if that's what someone would do in real life, under certain circumstances.