ciao a tutti, avrei bisogno di qualche consiglio su come creare un programma che mi restituisca 256 numeri random nell'intervallo 1-256 entrambi compresi, senza però riscrivere uno stesso numero più di una volta.
Grazie.
ciao a tutti, avrei bisogno di qualche consiglio su come creare un programma che mi restituisca 256 numeri random nell'intervallo 1-256 entrambi compresi, senza però riscrivere uno stesso numero più di una volta.
Grazie.
"La fortuna aiuta gli audaci"
(e non gli adagiati)
Per estrarre un numero random esiste la funzione Rnd.
Per funzionare correttamente bisogna impostare il generatore di numeri random con il comando Randomize timer (che estrae numeri casuali in base all'orario), altrimenti la sequenza dei numeri casuali sarebbe sempre la stessa.
Per tenere traccia dei numeri già usciti puoi memorizzarli in un vettore, e per non complicarti la vita con un algoritmo di ricerca puoi memorizzare i numeri estratti nella relativa posizione nel vettore (indice vettore = numero estratto).
Ecco un esempio:
Spero di essermi spiegato bene. Fammi sapere.codice:Private Sub Command1_Click() Dim Estratti(256) As Integer Dim Numero As Integer Dim lowerbound As Integer Dim upperbound As Integer Dim conta As Integer 'estremi sequenza di numeri lowerbound = 1 upperbound = 256 'azzero il vettore dei numero già estratti: For i = 1 To 256 Estratti(i) = 0 Next i Randomize Timer 'serve per generare numeri random 'Estraggo il primo numero random Numero = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) conta = 0 While conta < 256 'se il numero è nuovo non è presente 'nella sua posizione all'interno del vettore If Numero <> Estratti(Numero) Then 'lo inserisco nel vettore Estratti(Numero) = Numero 'aumento il contatore conta = conta + 1 End If 'estraggo il numero random successivo Numero = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Wend End Sub
Ciao![]()
lupusinfabula
Programmatore VB, ASP, Delphi.
ti ringrazio, tutto a posto!Originariamente inviato da Boldan
Per estrarre un numero random esiste la funzione Rnd.
Per funzionare correttamente bisogna impostare il generatore di numeri random con il comando Randomize timer (che estrae numeri casuali in base all'orario), altrimenti la sequenza dei numeri casuali sarebbe sempre la stessa.
Per tenere traccia dei numeri già usciti puoi memorizzarli in un vettore, e per non complicarti la vita con un algoritmo di ricerca puoi memorizzare i numeri estratti nella relativa posizione nel vettore (indice vettore = numero estratto).
Ecco un esempio:
Spero di essermi spiegato bene. Fammi sapere.codice:Private Sub Command1_Click() Dim Estratti(256) As Integer Dim Numero As Integer Dim lowerbound As Integer Dim upperbound As Integer Dim conta As Integer 'estremi sequenza di numeri lowerbound = 1 upperbound = 256 'azzero il vettore dei numero già estratti: For i = 1 To 256 Estratti(i) = 0 Next i Randomize Timer 'serve per generare numeri random 'Estraggo il primo numero random Numero = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) conta = 0 While conta < 256 'se il numero è nuovo non è presente 'nella sua posizione all'interno del vettore If Numero <> Estratti(Numero) Then 'lo inserisco nel vettore Estratti(Numero) = Numero 'aumento il contatore conta = conta + 1 End If 'estraggo il numero random successivo Numero = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Wend End Sub
Ciao![]()
![]()
"La fortuna aiuta gli audaci"
(e non gli adagiati)