Visual Basic.NET - Números aleatorios no repetidos en un textbox usando un array

 
Vista:
sin imagen de perfil
Val: 73
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Números aleatorios no repetidos en un textbox usando un array

Publicado por Pedro (38 intervenciones) el 13/04/2017 20:04:35
Hola

soy novato, necesito generar 3 números aleatorios entre 1 y 10 , estos 3 números tienen que ser distintos y mostrarse en 3 textbox, creo que estoy cerca pero me sigue repitiendo números de vez en cuando, ¿podrían ayudarme sin modificar mucho mi código? tengo claro que el error esta en la función "mostrar_resultados()", Gracias!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
' Creo un array de 3 campos y 3 variables   
Dim numeros(2) As Array
Dim numero1, numero2, numero3 As Integer
 
 
 
 
' Creo la función que genera un numero aleatorio del 1 al 3 y lo almacena en su variable
 
Public Function generar_resultados()
    numero1 = Int(-10 * Rnd() + 11)
 
    numero2 = Int(-10 * Rnd() + 11)
 
    numero3 = Int(-10 * Rnd() + 11)
 
End Function
 
' Creo la función que comprueba que los numeros no sean aleatorios y en caso afirmativo lo muestra en en textbox.
 
Public Function mostrar_resultados()
 
    Do While numero1 And numero2 And numero3 A = numero1 And numero2 And numero3
        generar_resultados()
    Loop
 
        TBNumeroAl1.Text = numero1
        TBNumeroAl2.Text = numero2
        TBNumeroAl3.Text = numero3
 
 
End Function
 
' llamo a la función que genera los números y la que comprueba que no sean repetidos mediante un botón.
 
Private Sub Bt_generador_Click(sender As Object, e As EventArgs) Handles Bt_generador.Click
     generar_resultados()
     mostrar_resultados()
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Números aleatorios no repetidos en un textbox usando un array

Publicado por Diego (190 intervenciones) el 13/04/2017 22:04:27
Hola Pedro, a ver si esto te sirve:

1
2
3
4
5
6
7
8
9
10
11
12
Public Function generar_resultados()
    numero1 = Int(-10 * Rnd() + 11)
 
    do
         numero2 = Int(-10 * Rnd() + 11)
    loop while numero2 = numero1
 
    do
         numero3 = Int(-10 * Rnd() + 11)
    loop while (numero3 = numero2) or (numero3 = numero1)
 
End Function

El primer numero es totalmente aleatorio y libre, el segundo, solo va a verificar que no sea igual al primero, y el tercero, va a verificar que no sea igual al primero ni al segundo. Listo.

Y tu funcion mostrar, solo debe limitarse a mostrar, quedaría asi...

1
2
3
4
5
6
7
Public Function mostrar_resultados()
 
        TBNumeroAl1.Text = numero1
        TBNumeroAl2.Text = numero2
        TBNumeroAl3.Text = numero3
 
End Function

Saludos y +Bytes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 73
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Números aleatorios no repetidos en un textbox usando un array

Publicado por Pedro (38 intervenciones) el 14/04/2017 01:56:58
mil gracias Diego! va perfecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Números aleatorios no repetidos en un textbox usando un array

Publicado por jorge rojas p (20 intervenciones) el 15/04/2017 05:28:52
de esta forma quedan ordenados de mayor a menor y sin repetir

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim posi As New List(Of Byte)()
    Dim num(2) As Byte
    Dim numero As Byte
    Randomize()
    numero = Int(9 * Rnd() + 1)
    posi.Add(numero)
    For Me.j = 0 To 1
86:         numero = Int(9 * Rnd() + 1)
        For Me.i = 0 To posi.Count - 1
            If numero > posi(i) Then posi.Insert(i, numero) : GoTo 87
            If numero = posi(i) Then GoTo 86
        Next
        posi.Add(numero)
87:     Next
    For Me.j = 0 To 2
        num(j) = posi(j)
    Next
    MsgBox(num(0) & " " & num(1) & " " & num(2))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar