|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
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 |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Re: Numeri random
Quote:
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... |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
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 ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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... |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
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 ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2001
Città: Nordest
Messaggi: 217
|
Oppure così:
Codice:
Dim n As Double Const LOW As Double = 100000000000# Const HIGH As Double = 999999999999# Randomize n = Int(Rnd * (HIGH - LOW + 1) + LOW) |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 367
|
Ottimo anche questo.
Carmen ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:32.