Originariamente inviato da lobbo
purtroppo non sono un esperto ho capito cosa hai detto ma non riesco a metterlo in pratica perché sto iniziando ad imparare leggendo codici e facendo prove (sicuramente non è il modo corretto).
saresti così gentile da postare un codice ?
questo vuole essere solo un esempio ...
codice:
Imports System.Threading
Module Module1
Dim lista As List(Of Integer) = New List(Of Integer)
Sub Main()
' lista con i numeri
' in questo caso creati al volo, quindi per evitare la sequenzialità a tratti nell'estrazione
' (visto che le estrazioni le metto tutte insieme nel ciclo)
' ho dovuto ricorrere ad uno sleep sul thread in modo da far si che cambi il seed passato per creare il numero random.
lista = Enumerable.Range(1, 90).ToList()
'simulo tutte le estrazioni
For i = 1 To 90
Console.WriteLine(String.Format("Estrazione numero {0} : Numero estratto : {1}", i, Estrazione()))
'fermo il thred 3 millisecondi (in modo che cambi il seed del random)
Thread.Sleep(3)
Next
Console.ReadLine()
End Sub
Function Estrazione() As Integer
Dim random As New Random(DateTime.Now.Millisecond)
'creo il numero casuale con un range uguale al numero di elementi presenti nella lista
Dim nr = random.Next(lista.Count)
'leggo il valore corrispondente nella lista
Dim numeroEstratto = lista(nr)
'rimuovo il numero corrispondente dalla lista in modo che non sia più richiamato
lista.RemoveAt(nr)
'restituisco il numero estratto
Return numeroEstratto
End Function
End Module