- Presentación.
- Bajar Primitiva.zip
- Se trata de obtener 6 números aleatorios entre el 1 y el 48. Entre esos 6 números no debe haber ninguno repetido. De tal manera que cada vez que se obtenga un número, se comprobará, mediante una tabla si ya ha salido anteriormente, en caso que haya salido se busca otro número y en caso que no se haya obtenido se almacena en la tabla.
____________________________
- Designer. Layout.
Código
|
|
- Agregamos un Button y seis Label.
- Guardamos el Designer como layout.
Los códigos comienzan con
Sub Process_Globals
End Sub
Si no tienen esas líneas dará error. |
____________________________
- Código (copia y pega).
Código del programa en Basic4Android
|
' Programa realizado por Juan Antonio Villalpando
' juana1991@yahoo.com
Sub Process_Globals
End Sub
Sub Globals
Dim numero, a As Int
' Se crea una tabla desde el 0 al 6 (para eso ponemos tabla(7)
' tomarelos los elementos 1, 2, 3, 4, 5 y 6 de la tabla.
Dim tabla(7) As Int
Dim repetido As Boolean
Dim Button1 As Button
Dim Label1, Label2, Label3, Label4, Label5, Label6 As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("layout")
End Sub
Sub Button1_Click
For n = 1 To 6
' Do
repetido = True
Do While repetido = True
repetido = False
numero = Rnd(1,49)
For k = 1 To 6
If tabla(k) = numero Then repetido = True
Next
'Loop While repetido = True
Loop
tabla(n) = numero
Next
Label1.Text = tabla(1)
Label2.Text = tabla(2)
Label3.Text = tabla(3)
Label4.Text = tabla(4)
Label5.Text = tabla(5)
Label6.Text = tabla(6)
End Sub
|
- Creamos una tabla(7) que contiene los elementos:
tabla(0), tabla(1), tabla(2), tabla(3), tabla(4), tabla(5), tabla(6)
- El último elemento de la tabla es el 6, NO es el 7.
- Nosotros utilizaremos desde el elemento tabla(1) hasta el tabla(6)
- El elemento tabla(0), existe pero no lo utilizaremos.
- Creamos un número aleatorio desde el 1 al 48. (Uno menos del que ponemos en el Rnd(1,49)
- Cada vez que se crea un número, se consulta los 6 elementos de la tabla.
For k = 1 To 6
- Si algún número contenido en la tabla coincide con el número actual, se repetirá la obtención del número.
- Si el número que ha salido no está en la tabla, se almacena en el lugar actual de la tabla(n) = numero
- Basic4Android no admite: Loop While repetido = True
____________________
2.- Otro código.
Aquí puedes ver otro código para generar números aleatorios sin repetición.
https://www.b4x.com/android/forum/threads/how-to-dont-repetition-random-number.13892/#post78764
Fisher-Yates shuffle
En el código anterior el resultado se visualiza en el Logs (pestaña abajo derecha del editor del programa).