Ricerca…


introduzione

La classe Random è usata per generare interi pseudo-casuali non negativi che non sono veramente casuali, ma sono per scopi generali abbastanza vicini.

La sequenza viene calcolata usando un numero iniziale (chiamato il seme ) Nelle precedenti versioni di .net, questo numero di seme era lo stesso ogni volta che veniva eseguita un'applicazione. Quindi, ciò che accadrebbe era che avresti ottenuto la stessa sequenza di numeri pseudo-casuali ogni volta che l'applicazione è stata eseguita. Ora, il seme si basa sul momento in cui l'oggetto è dichiarato.

Osservazioni

Infine, una nota sulla randomizzazione. Come accennato in precedenza, quando si dichiara un'istanza di Random senza parametri, il costruttore utilizzerà l'ora corrente come parte del calcolo per creare il numero iniziale di seme. Normalmente questo è OK.

Però. Se si riscrivono nuove istanze in un intervallo di tempo molto breve, ogni volta che viene calcolato il numero di seme, il tempo potrebbe essere lo stesso. Considera questo codice.

For i As Integer = 1 To 100000
    Dim rnd As New Random
    x = rnd.Next
Next

Poiché i computer sono molto veloci in questi giorni, questo codice impiegherà una frazione di secondo per essere eseguito e su diverse iterazioni del ciclo, l'ora del sistema non sarà cambiata. Quindi, il numero seme non cambierà e il numero casuale sarà lo stesso. Se si desidera generare molti numeri casuali, dichiarare l'istanza di casuale al di fuori del ciclo in questo semplice esempio.

Dim rnd As New Random
For i As Integer = 1 To 100000
    x = rnd.Next
Next

La regola di base è non riattivare un generatore di numeri casuali su brevi periodi di tempo.

Dichiarazione di un'istanza

Dim rng As New Random()

Questo dichiara un'istanza della classe Random chiamata rng . In questo caso, l'ora corrente nel punto in cui viene creato l'oggetto viene utilizzata per calcolare il seme. Questo è l'uso più comune, ma ha i suoi problemi, come vedremo più avanti nelle osservazioni

Invece di consentire al programma di utilizzare l'ora corrente come parte del calcolo per il numero seme iniziale, è possibile specificare il numero seme iniziale. Questo può essere qualsiasi letterale intero a 32 bit, costante o variabile. Vedi sotto per gli esempi. Ciò significa che l'istanza genererà la stessa sequenza di numeri pseudo-casuali, che può essere utile in determinate situazioni.

Dim rng As New Random(43352)

o

Dim rng As New Random(x)

dove x è stato dichiarato altrove nel tuo programma come costante o variabile intera.

Genera un numero casuale da un'istanza di Random

L'esempio seguente dichiara una nuova istanza della classe Random e quindi utilizza il metodo .Next per generare il numero successivo nella sequenza di numeri pseudo-casuali.

Dim rnd As New Random
Dim x As Integer
x = rnd.Next

L'ultima riga sopra genererà il prossimo numero pseudo-casuale e lo assegnerà a x . Questo numero sarà compreso tra 0 e 2147483647. Tuttavia, è anche possibile specificare l'intervallo di numeri da generare come nell'esempio seguente.

x = rnd.Next(15, 200)

Si noti, tuttavia, che utilizzando questi parametri, l'intervallo di numeri sarà compreso tra 15 o sopra e 199 o inferiore.

Puoi anche generare numeri in virgola mobile del tipo Double usando .NextDouble es

Dim rnd As New Random
Dim y As Double
y = rnd.NextDouble()

Tuttavia, non è possibile specificare un intervallo per questo. Sarà sempre nell'intervallo da 0,0 a meno di 1,0.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow