Originariamente inviato da ggmac
Non riesco a capire come ripartizionare i premi per fascie quindi ogni tot premi di fascia bassa inserirne uno di fascia alta di premio ecc.. ed attribuirne uno ogni 20 che giocano.
Io userei un array di strutture del tipo:
codice:
struct Giocatore
{
    /* ... vari dati personali ... */
    int NumeroPremio;
}
, dove NumeroPremio all'inizio dell'estrazione viene inizializzato a zero.
Quindi iteri su tutti i premi da assegnare, e per ciascuno estrai un numero compreso tra 0 e il numero degli elementi nell'array dei giocatori; se il giocatore corrispondente ha NumeroPremio impostato a zero (cioè non ha ancora vinto niente) gli assegni il premio (assegnando a NumeroPremio un qualche ID che caratterizzi il premio vinto), altrimenti ripeti l'estrazione per il premio in questione finché non trovi qualcuno che non ha ancora vinto niente; bisogna naturalmente anche controllare che ci siano ancora giocatori senza premio, altrimenti rischi un loop infinito (anche se è raro che ci siano più premi che giocatori ).
In alternativa puoi usare un'altra struttura dati da cui ogni volta vai a rimuovere il giocatore che ha appena vinto; i numeri casuali in questo caso saranno nel range [0, numero di elementi ancora nella lista).