Como ya se ha dado cuenta, el componente principal de este tipo de juegos es el motor de simulación de partidos. Como Spence said so, quiere que la simulación se "vea bien" en lugar de "estar en lo cierto".
Trabajé en una simulación de juego de rugby hace algún tiempo y hay un enfoque que funciona bastante bien. Su coincidencia es una máquina de estados finitos. Cada fase de juego es un estado, tiene un resultado que se traduce en una transición de fase o cambios en el estado del juego (puntuación, reemplazos, ...). Agregue un sistema de eventos/oyentes para manejar cosas que no están estrictamente relacionadas con la estructura del juego que está simulando y tiene una buena estructura (cada vez que sucede algo en la simulación, una falta, por ejemplo, un evento; los oyentes pueden ser un sistema de generación de comentarios o un AI responsable de las estrategias de los equipos).
Puedes comenzar con un motor de simulación aproximado que maneja las cosas a nivel de equipo usando un promedio de las estadísticas de tus jugadores y luego pasa a algo más detallado que simula cosas a nivel de jugador. Creo que ese tipo de enfoque iterativo se adapta muy bien a una simulación de juego porque quieres que se vea bien, y tan pronto como un elemento se vea bien, puedes dejar de iterar y trabajar en otra parte de tu sistema.
Aleatorio es, por supuesto, parte del juego porque, como dices, no quieres que los juegos sean demasiado predecibles. Una cosa muy simple de hacer es tener tiradas de dados virtuales contra un jugador y estadísticas del equipo cuando están realizando una acción en particular (tirando la pelota, por ejemplo).
Editar: Asumo que estamos hablando de juegos de administración como Hattrick, donde se administra una lista y se simulan los resultados del juego en lugar de simulaciones gráficas 2D/3D.
Sí, se supone que es un juego de gestión. – Victor