Número esperado de colisiones hash

Siento que estoy pensando demasiado este problema, pero aquí va de todos modos ...

Tengo una tabla hash con ranuras M en su matriz interna. Necesito insertar N elementos en la tabla hash. Suponiendo que tengo una función hash que inserta aleatoriamente un elemento en una ranura con la misma probabilidad para cada ranura, ¿cuál es el valor esperado del número total de colisiones hash?

(Lamento que esto sea más una pregunta matemática que una pregunta de programación).

Edit: Aquí hay un código que tengo para simularlo usando Python. Recibo respuestas numéricas, pero tengo problemas para generalizarlo a una fórmula y explicarlo.

import random
import pdb

N = 5
M = 8

NUM_ITER = 100000

def get_collisions(table):
    col = 0
    for item in table:
        if item > 1:
            col += (item-1)
    return col

def run():
    table = [0 for x in range(M)]

    for i in range(N):
        table[int(random.random() * M)] += 1

    #print table
    return get_collisions(table)

# Main

total = 0
for i in range(NUM_ITER):
    total += run()

print float(total)/NUM_ITER

Respuestas a la pregunta(4)

Su respuesta a la pregunta