Oppure

Loading
15/07/10 13:35
debora321
Salve,
avrei bisogno di aiuto: vorrei creare un programma che mi generi dei numeri seriali composti da 8 caratteri (i primi 3 lettere i secondi 5 numeri ---> es. DUJ49873). Sono purtroppo rimasta a gwbasic...con il quale userei la funzione randomize. Mi piacerebbe inoltre che la funzione rnd cambiasse a seconda dell'anno (quando mi chiede il 'random seed number' vorrei che questo lo potessi digitare e che rappresentasse l'anno).
Spero di essere stata chiara e di ricevere quanto prima un pò di aiuto.
grazie
Debora
aaa
15/07/10 13:41
Alfonso
Vuoi che i caratteri (numeri e le lettere) siano univoci?

Comunque Randomize e Rnd vivono anche in Vb6
Ultima modifica effettuata da Alfonso 15/07/10 14:58
aaa
16/07/10 10:52
debora321
Postato originariamente da Alfonso:

Vuoi che i caratteri (numeri e le lettere) siano univoci?

Comunque Randomize e Rnd vivono anche in Vb6


Si vorrei che fossero univoci nel senso che ogni numero deve rapprenstare un singolo numero seriale.
Grazie:)
aaa
16/07/10 12:05
Alfonso
Per univoci intendevo che non fossero duplicati all'interno del seriale. Ma penso che sia così.
Considerando il set di caratteri Ascii si può procedere così:
lettere: A=65 Z=90 si trova un numero random tra 0 e 25 e lo si somma a 65
numeri: 0=48 9=57 si trova un numero random tra 0 e 9 e lo si somma a 48
La formula per ottenere il numero random è:
Int((limitesup - limiteinf + 1) * Rnd + limiteinf)

Dim n As Integer, Finito As Integer
Randomize 2010 
' estre tre lettere che non siano già comprese nella casella di testo
Finito = 1
Do While Finito < 4  ' si ferma dopo 3 lettere 27 per vedere tutte le lettere
   n = 65 + Int(26 * Rnd())
   ' controlla se esiste già il carattere 
   If InStr(Text1.Text, Chr(n)) = 0 Then
      Text1.Text = Text1.Text & Chr(n)
      Finito = Finito + 1
   End If
Loop
' estrae tre numeri che non siano già compresi nella casella di testo
Finito = 1
Do While Finito < 6 ' 11 per vedere tutti i numeri
   n = 48 + Int(10 * Rnd)
   If InStr(Text1.Text, Chr(n)) = 0 Then
      Text1.Text = Text1.Text & Chr(n)
      Finito = Finito + 1
   End If
Loop


Naturalmente con Randomize 2010 la sequenza di seriali sarà sempre uguale ad ogni riavvio del programma.
aaa