Per non ripetere la stessa domanda puoi creare una lista non visibile o un array, ad ogni nuova domanda controlli se la nazione che è stata scelta è già in lista e nel caso esegui di nuovo la selezione di una nuova domanda.
Tanto per fare il professore e perché in alcuni casi non si può sprecare tempo nel ritentare se un determinato elemento sia già stato usato...
Uno dei metodi più usati è usare un array ed un "contatore". Inizialmente il contatore è impostato sulla lunghezza totale dell'array; poi, dopo ogni "esecuzione" (domanda estratta), si sposta in fondo all'array l'elemento estratto e si diminuisce di 1 il contatore.
Valore(0) = 12
Valore(1) = 23
Valore(2) = 34
Valore(3) = 45
Valore(4) = 56
Valore(5) = 67
Valore(6) = 78
Valore(7) = 89
Contatore = 8 - 8 elementi nell'array.
Scelto =
Rnd(0, Contatore) - mettiamo che valga 3. Si scambiano di posto
Valore(
Scelto) e Valore(
Contatore-1), che è l'ultimo della lista.
Diventano:
Questo procedimento verrà eseguito fino a che
Contatore varrà 1 e con la
Rnd si preleverà il primo elemento dell'array, ovvero fine delle domande.
Per ricominciare basterà reimpostare
Contatore a 8.
Per scambiare di posto i due elementi dell'array (nell'esempio sopra il 3 ed il 7) si usa un metodo che in inglese si chiama Swap:
Dim Temporaneo As Int = Valore(Scelto)
Valore(Scelto) = Valore(Contatore)
Valore(Contatore) = Temporaneo
Sembra complicato ma è semplicissimo ed efficace.
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
Dopo tutta 'sta roba... è ancora più semplice usare le List
Dim lstValore As List
Dim Contatore, Scelto, Temporaneo As Int
Contatore = 8
' si inizializza e riempie lstValore con Contatore elementi.
Scelto = Rnd(0, Contatore)
Temporaneo = lstValore.Get(Scelto)
lstValore.RemoveAt(Scelto)
lstValore.Add(Temporaneo)
Contatore = Contatore - 1
' si torna alla riga di "randomizzazione" (si usa un ciclo).
------------------------------------------------------------------------------
Morale della favola: abbandonate gli Array ed usate le List