An example of how to implement Expectimax for a game where the opponent has a 50% chance of playing optimally and a 50% chance of playing randomly is given below:
Python
def expectimax(node, depth, isMaximizingPlayer):
 if depth == 0:
 return node.utility
 if isMaximizingPlayer:
 bestValue = -float("inf")
 for child in node.children:
 bestValue = max(bestValue, expectimax(child, depth - 1, False))
 return bestValue
 else:
 totalValue = 0.0
 p = 0.5
 for child in node.children:
 totalValue += p * expectimax(child, depth - 1, True)
 return totalValue
So, to implement Expectimax, the steps are:
- Define a utility function
- Recursively evaluate game states
- Handle chance nodes