Ciao. Ti do un po di spiegazioni:
'Inizializzo il generatore di numeriCasuali
La classe Random è quella che genera i numeri casuali. Quando viene inizializzata ha bisogno di un numero di partenza detto "seme" da cui partire per la generazione dei numeri casuali. Ho utilizzato i minuti, secondi e millisecondi correnti (sommati) di modo che ogni volta che inizializzi la Random sicuramente la inizializzerai con un numero diverso.
''Inizializzo il contenitore di confronto
Dim numEstratti As List(Of Integer) = New List(Of Integer)
La classe List è una particolare classe unidimensionale tipizzata. In parole povere è un contenitore di oggetti di tipo X. Nel caso nostro rappresenta un contenitore di oggetti di tipo 'integer'. Questa classe è comoda perchè ha un metodo che ti permette di sapere se un oggetto è già presente o no nella lista. Questo perchè nella lista non è possibile avere oggetti uguali.
Dim numCor As Integer = 0
Dichiarazione di una semplice variabile intera utilizzata come appoggio.
While numEstratti.Count < 10
Utilizzo un ciclo 'while' perchè non so apriori quante iterazioni dovrò effettuare. Tradotto in parole povere vuol dire "fino a che in 'numEstratti' ci sono meno di 10 elementi esegui quello che c'è nel blocco while. Quando poi arrivi ad aggiungere il 10mo elemento esci dal ciclo". Utilizzo questo tipo di approccio perchè la classe Random dando numeri casuali potrebbe generarmi più volte lo stesso numero.
numCor = rnd.Next(1, 21)
Richiedo alla classe Random di generarmi un numero compreso tra 1 e 20 e lo appoggio nella variabile 'numCor'
If (Not numEstratti.Contains(numCor)) Then
Controllo se il valore di 'numCor' non è già presente nella lista di interi. Nel caso in cui non c'è eseguo la riga successiva altrimenti (numero già estratto in precedenza) l'esecuzione riprende dalla valutazione 'While numEstratti.Count < 10' e quindi estraggo un nuovo numero e così proseguo fino a che numEstratti arriva a contenere 10 elementi.
numEstratti.Add(numCor)
Aggiungo il numero presente nella variabile 'numCor' nella lista.
End If
End While
numEstratti.Sort()
Effettuo l'ordinamento degli elementi all'interno della lista. Questo perchè la classe random mi genera i numeri a casaccio tra 1 e 20 e quando li metto nella lista rimangono nell'ordine con cui vengono inseriti. Ad esempio posso avere questa situazione 5, 15, 2,1,20,19,18,4, 6,8. invocando il Sort() mi ordina progressivamente i numeri. Niente di più.
Il pezzo di codice che segue non serve a niente
Era solo di controllo per vedere se era presente anche il numero 21.
mi sono dimenticato di toglierlo dopo i test
If numEstratti.Contains(21) Then
MsgBox(21)
End If
''Scrivo i numeri estratti nelle textBox
Associo ad ogni textbox i valori prelevati nella lista di interi. Per accedere all'elemento specifico occorre dare un indice a base zero. Elemento 1 nella posizione 0, elemento 2 nella posizione 1 etc...
Me.TextBox1.Text = numEstratti(0).ToString()
Me.TextBox2.Text = numEstratti(1).ToString()
Me.TextBox3.Text = numEstratti(2).ToString()
Me.TextBox4.Text = numEstratti(3).ToString()
Me.TextBox5.Text = numEstratti(4).ToString()
Me.TextBox6.Text = numEstratti(5).ToString()
Me.TextBox7.Text = numEstratti(6).ToString()
Me.TextBox8.Text = numEstratti(7).ToString()
Me.TextBox9.Text = numEstratti(8).ToString()
Me.TextBox10.Text = numEstratti(9).ToString()
Spero abbia "allargato" un po la tua conoscenza
Cristian Barca