View Full Version : Numeri random
qualcuno può postarmi un piccolo esempio per ricavare dei numeri random
x = CLng(Rnd * 999999999 + 1)
msgbox x
Il codice postato quì mi consente di avere numeri random fino ad un massimo di 9 cifre, poichè dopo mi dà overflow.
Volevo qualcosa che mi consentisse di generare più numeri fino ad esempio a 15 cifre.
Ciao. Carmen
Originariamente inviato da Carmen
[B]qualcuno può postarmi un piccolo esempio per ricavare dei numeri random
x = CLng(Rnd * 999999999 + 1)
msgbox x
Il codice postato quì mi consente di avere numeri random fino ad un massimo di 9 cifre, poichè dopo mi dà overflow.
Volevo qualcosa che mi consentisse di generare più numeri fino ad esempio a 15 cifre.
Ciao. Carmen
In teoria fino a 10 cifre... Il long è un intero a 32 bit...quindi può contenere numeri fra +2miliardi e -2miliardi (10 cifre)...
Quindi anche se riuscissi a generare un numero a 15 cifre non riusciresti a manipolarlo con gli interi...devi usare un double...
Ad esempio prova se funziona una cosa del genere...
Randomize
numero = (CDbl(10000000) * CDbl(Rnd)) * (CDbl(10000000) * CDbl(Rnd));
Questo dovrebbe generare un numero random che può avere al massimo 14 cifre (quelle minori di zero non le devi contare)...
L'unico problema è che quel numero è un numero in virgola mobile...e non un intero...
Ora non so se VB permette di utilizzare interi a 64 bit...altrimenti potresti andare verso questo tipo di interi...
Grazie per la risposta.
Diciamo che la tua funzione "funziona". Però non và bene al caso mio per due motivi:
1) Mi dà alla fine la virgola, và bhè! questo e superabile;
2) Non genera numeri con lunghezza fissa: Es. Io voglio che mi generi ad esempio numeri random sempre a 12 cifre, in questo caso non lo fà, in quanto una volta me ne dà 14, un'altra 15 etc...
Devo essere io ad poter decidere a priore di quante cifre dovranno essere i numeri random generati.
Carmen ;)
Vediamo...ti faccio un esempio di un numero sempre a 12 cifre...ok...
Randomize
'Questo genera un numero al max a 11 cifre...
numero = (CDbl(1000000) * CDbl(Rnd)) * (CDbl(10000000) * CDbl(Rnd))
'Ci sommo un numero di 12 cifrer che ha la prima cifra casuale e le altre a 0
numero = numero + (Int((Rnd*9)+1)*CDbl(1000000)*CDbl(1000000))
numero = Round(numero,0)
Credo che così possa andare bene...
Ancora grazie per l'interessamento.
Nel frattempo però io o messo a punto questa funzione che funge benissimo, proprio come volevo io. Ti consente di avere una stringa casuale di quante cifre vuoi, ed anche di numeri e lettere insieme.
Randomize: StrFinale = ""
'Stringa = "0123456789" ' per soli numeri
Stringa = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
Differenza = Len(Stringa) - 1
Lunghezza = 15
For i = 1 To Lunghezza
StrFinale = StrFinale & Mid(Stringa, Round((Rnd() * Differenza) + 1), 1)
Next
MsgBox StrFinale
Ciao Carmen :)
Oppure così:
Dim n As Double
Const LOW As Double = 100000000000#
Const HIGH As Double = 999999999999#
Randomize
n = Int(Rnd * (HIGH - LOW + 1) + LOW)
Ottimo anche questo.
Carmen :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.