No invece secondo me qui c'è un errore: tu avevi scritto
clienti = rand() % ((domanda_tot_sistema / slot) + 1) + (domanda_tot_sistema / slot);
ma questa va da (domanda_tot_sistema / slot) fino a 2*(domanda_tot_sistema / slot).
Se invece deve andare fino a domanda_tot_sistema/((slot/2)+1) allora secondo me deve essere
clienti = rand() % ((domanda_tot_sistema * slot - 2 * domanda_tot_sistema) / (slot * (slot + 2)) + 1) + (domanda_tot_sistema / slot);
e ti dico anche il perché, così vedi se ho sbagliato qualche calcolo...
L'istruzione
rand() % (a+1) + b;
restituisce valori da (b) fino ad (a+b). Quindi nel nostro caso sarà
b = (domanda_tot_sistema / slot)
a+b = domanda_tot_sistema/((slot/2)+1)
Facendo la differenza trovi (a), alla quale poi sommi 1. Prova a vedere se ho sbagliato qualcosa.
Comunque ho provato anche così e credo che resti un ciclo infinito.