|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

27.- Lotería primitiva. Tablas. Arrays. Aleatorios. Bucles.

- Tutoriales. Lotería primitiva.

- 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).

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información