Salve ragazzi, ho bisogno di qualche consiglio su come far funzionare perfettamente questo programmino.
In pratica volevo realizzare/simulare una specie di tombola, dove c'è il "dealer" o banco, il "player" ed una lista dinamica di giocatori .
Il codice è molto rudimentale perché è un mix di prove ecc ecc; comunque in pratica il programma ci chiede all'inizio quanti giocatori siamo ed ognuno di noi deve scegliere una cartella, da 1 a 6 (ogni cartella è composta da 15 numeri). 
Finita questa prima fase, il bancone (dentro un while) inizierà a sorteggiare dei numeri random (1,90) ognuno diverso dall'altro fino a quando il giocatore[j-esimo] presente nella lista non farà tombola; uscito dal while il programma dovrà dirmi il giocatore x dopo quante estrazioni ha fatto tombola, in modo che alla fine si possa stabilire che realmente ha fatto per primo tombola. 
Per quanto riguarda ambo, terna, quaterna e cinquina lo vedrò in seguito; per ora mi interessa farlo funzionare così.
il problema che riscontro è che una volta che il programma mi dice che il player x ha fatto tombola dopo ad esempio 80 numeri estratti, non riesco ad azzerargli correttamente i numeri estratti in modo che riparta da capo col giocatore [j-esimo] seguente, senza la presenza di " bug".
CODICE BANCO 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tombola1Player
{/// <summary>
/// Banco has to generate random numbers from 1 to 90 each time he's called
/// </summary>
    class Banco
    {
        public Banco() { }
        List<int> listaEstrazioni = new List<int>();
        Random rnd = new Random();
       public int numeroGenerato=0;
        public int estraiNumero()
        {
             
            for (; ; ) {
                numeroGenerato = rnd.Next(1, 91);
                if (!listaEstrazioni.Contains(numeroGenerato))
                {
                    listaEstrazioni.Add(numeroGenerato);
                    return numeroGenerato;
                }
            }
        }  
    }
}
CODICE GIOCATORE
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tombola1Player
{
    class Giocatore
    {
        int id = 0;
        int count = 0;
        Banco bancone = new Banco();
        List<int> cartellaPlayer = new List<int> {21,19,17,31,14,6,12,71,22,10,2,57,37,4};
        List<int> cartellaPlayer2 = new List<int> { 7,13,21,35,37,49,43,51,63,75,77,83,91,27 };
        List<int> cartella1 = new List<int> { 8,30,41,62,71,14,24,39,54,82,19,25,44,59,89};
        List<int> cartella2 = new List<int> { 1,20,40,55,81,16,36,65,75,87,3,18,21,69,78};
        List<int> cartella3 = new List<int> { 11,35,50,60,70,6,42,53,79,83,28,37,48,68,86 };
        List<int> cartella4 = new List<int> { 12,23,45,51,90,4,15,33,47,72,9,27,38,58,66 };
        List<int> cartella5 = new List<int> { 22,34,56,61,80,2,13,29,43,76,7,17,63,77,85 };
        List<int> cartella6 = new List<int> { 5,10,46,52,64,26,31,57,73,84,32,49,67,74,88 };
        public Giocatore(int x)
        {
            id = x;
        }
        public Giocatore() { }
              
        /// <summary>
        /// Player checks the extract number and if he has that number 
        /// he will mark up the corrispondent one on his table.
        /// </summary>
        /// <returns></returns>
        public void controllaNumero(int n)
        {
            if (cartellaPlayer.Contains(n))
            {                
                count++;  
            }
          
        }
        /// <summary>
        /// return true if player made Tombola!, false if not!
        /// </summary>
        /// <returns></returns>
        public bool tombola()
        {
            if (count == 15)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public void verificaTombola()
        {
            Console.WriteLine("Player"+id+ ": Ecco i miei numeri-- > ");
            for (int i = 0; i < cartellaPlayer.Count; i++)
            {
                Console.Write(cartellaPlayer[i]+" || ");
            }
        }
        public int GetNomeGiocatore()
        {
            return id;
        }
        public void SetCartella(List <int>cartella)
        {
            cartellaPlayer = cartella;
        }
        /// <summary>
        /// Questa funzione mi permette di far selezionare al giocatore la cartella con cui giocare
        /// </summary>
        /// <param name="x"></param>
        public void SelezionaCartella(int x)
        {
            switch (x)
            {
                case 1:
                    SetCartella(cartella1);
                    Console.WriteLine("Hai selezionato la Cartella 1. ");
                    break;
                case 2:
                    SetCartella(cartella2);
                    Console.WriteLine("Hai selezionato la Cartella 2. ");
                    break;
                case 3:
                    SetCartella(cartella3);
                    Console.WriteLine("Hai selezionato la Cartella 3. ");
                    break;
                case 4:
                    SetCartella(cartella4);
                    Console.WriteLine("Hai selezionato la Cartella 4. ");
                    break;
                case 5:
                    SetCartella(cartella5);
                    Console.WriteLine("Hai selezionato la Cartella 5. ");
                    break;
                case 6:
                    SetCartella(cartella6);
                    Console.WriteLine("Hai selezionato la Cartella 6. ");
                    break;
                default:
                    Console.WriteLine("[ATTENZIONE, devi inserire un numero da 1 a 6!]");
                    break;
            }
        }
    }
}
CODICE Program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tombola1Player
{
    class Program
    {
        static void Main(string[] args)
        {
            Banco dealer = new Banco();
            Giocatore player = new Giocatore();
           // Multigiocatore multiPlayer = new Multigiocatore();
            List<Giocatore> ListaGiocatori = new List<Giocatore>();
            int nmrCartella = 0;
            int numeroGiocatori = 0;
            Console.WriteLine("CIAO, Quanti giocatori siete?:  ");
            numeroGiocatori = Convert.ToInt32(Console.ReadLine());
                
            
            for (int k = 1; k< numeroGiocatori+1; k++)
            {
                player = new Giocatore(k);
               ListaGiocatori.Add(player);
               
            }
            
            for (int y = 0; y < numeroGiocatori; y++)
            {
                    Console.Write("\nGiocatore "+ (y+1) +" quale cartella vuoi?:  ");
                    nmrCartella = Convert.ToInt32(Console.ReadLine());
                   ListaGiocatori[y].SelezionaCartella(nmrCartella);
                
            }
            int i = 0;
           for (int j = 0; j < ListaGiocatori.Count; j++)
            {
             
                while (i < 90 && !ListaGiocatori[j].tombola())
                {
                    int num = dealer.estraiNumero();
                  //  Console.WriteLine("Numero Estratto: " + num);
                   ListaGiocatori[j].controllaNumero(num);
                    i++;
                }
                Console.Write("\n\nIl giocatore " + ListaGiocatori[j].GetNomeGiocatore() + " ha fatto tombola dopo: ");
                Console.WriteLine(i+ " numeri estratti");
                ListaGiocatori[j].verificaTombola();
                
                
           }
            Console.ReadKey();
        }
    }
}
Aspetto un vostro riscontro