Autor
|
Tema: Letras alatorias no repetidas (Leído 3,553 veces)
|
Cj2009z
Desconectado
Mensajes: 52
|
Hola amigos, como estan, espero q muy bine, bueno veran, me gustaria saber como sacar letras alatorias pero que no sean repetidas, un ejemplo de esto seria:
FXKLK-FFF25-CAVDR-12F35-VAL87
entonces asi como se encuentra arriba me gustaria q dicho programa me tirara alatoriamente las letras pero no repetidas tomando en cuenta esos guiones que se encuentran tambien. Espero que ayuden con mi hilo, gracias.
|
|
|
En línea
|
|
|
|
DrakoX
Desconectado
Mensajes: 191
|
Averigua sobre - Rnd - Mid y desp es cuestion de ingeniarselas
salu2
|
|
|
En línea
|
|
|
|
MANULOMM
Desconectado
Mensajes: 559
Erepublik.com
|
Nose Si Depronto esto te sirva, todo es cuestion de logica y saber un poco de caracteres Ascii, aqui lo que hize fue generar 5 numeros aleatorios 5 veces he ir componiendo la clave conviertiendo los numero aleatorios (ascii) en caracteres mediante la funcion Chr$ El objetivo es que estudies bien el code todo es cuestion de analisis.... este lo acabo de hacer, no es tan dificil Private Sub Command1_Click() Dim MAY As Integer 'Num Aleatorio Letras MAYUSCULAS Dim Num As Integer 'Num Aleatorio Numeros 0-9 Dim LON As Integer 'Letra O Numero Dim i As Integer 'Control De Bucle Dim j As Integer 'Control De Bucle Dim Clave As String 'Clave Completa XXXXX-XXXXX-XXXXX-XXXXX-XXXXX For i = 1 To 5 For j = 1 To 5 Randomize LON = Rnd * 1 If LON = 0 Then 'Si Es Verdadero Se Genera Letra MAYUSCULA Randomize MAY = Rnd * 24 MAY = MAY + 65 If j = 5 And i < 5 Then Clave = Clave + Chr$(MAY) + "-" Else Clave = Clave + Chr$(MAY) End If Else 'De lo contrario se genera un numero de 0 - 9 Randomize Num = Rnd * 8 Num = Num + 49 If j = 5 And i < 5 Then Clave = Clave + Chr$(Num) + "-" Else Clave = Clave + Chr$(Num) End If End If Next j Next i MsgBox Clave End Sub
Mira estos enlaces: http://es.wikipedia.org/wiki/ASCIIhttp://www.google.com.co/search?hl=es&q=Ascii&meta=Atentamente, Juan Manuel Lombana Medellín - Colombia
|
|
|
En línea
|
|
|
|
DrakoX
Desconectado
Mensajes: 191
|
no hay ni necesidad de usar ascii, se puede crear un array cn todos los caracteres que uno quiere que se utilizan y listo. de esa forma te ahoras la conversion,
es mas simple de lo que uno puede pensar, el tema es que hay q pensar jajaja xD
salu2 y suerte
|
|
|
En línea
|
|
|
|
MANULOMM
Desconectado
Mensajes: 559
Erepublik.com
|
Tambien lo pense de esa manera pero con este code es mas facil estudiar y aprender además a nivel de memoria resultaria mas pesado.... , tambien se puede hacer con una enumeracion, y un modulo para la comparacion pero ya es cosa de cada quien, realmente lo hize de esta manera por recursividad y aprovechamiento de espacio en pila Atentamente, Juan Manuel Lombana Medellín - Colombia
|
|
« Última modificación: 4 Abril 2007, 07:46 am por MANULOMM »
|
En línea
|
|
|
|
DrakoX
Desconectado
Mensajes: 191
|
Private Sub Generar() Randomize For x = 1 To 5 For y = 1 To 5 1: LON = Int(Rnd * 2) Select Case LON Case 0 'Genera Letra L = Int(Rnd * 25) + 65 For pos = 1 To Len(Text1) If InStr(pos, Text1, Chr$(L)) Then GoTo 1 End If Next pos If y = 5 And x < 5 Then Text1 = Text1 + Chr$(L) + "-" Else Text1 = Text1 + Chr$(L) End If Case 1 'Genera Numero N = Int(Rnd * 10) + 48 For pos = 1 To Len(Text1) If InStr(pos, Text1, Chr$(N)) Then GoTo 1 End If Next pos If y = 5 And x < 5 Then Text1 = Text1 + Chr$(N) + "-" Else Text1 = Text1 + Chr$(N) End If End Select Next y Next x End Sub Con este code, genera exactamente lo que pedis, y no se repite nada. salu2 PD: Lo hice xq taba muy aburrido jaja xD
|
|
|
En línea
|
|
|
|
Cj2009z
Desconectado
Mensajes: 52
|
Gracias amigos los dos ejemplos me funcionarion a la perfeción. bueno entonces damos por cerrado este tema. gracias.
|
|
|
En línea
|
|
|
|
|
|