Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: 2Pac Mafia en Abril 24, 2016, 08:33:09 am
-
Hola a todos,
lo primero saludar a todos ya que este es mi primer post en este foro. Tengo muy pocas nociones de Visual Basic pero considero que lo necesito para ejecutar una serie de instrucciones que me permitan analizar bases de datos, que siempre serán números del 0 al 36 aleatorios y distribuídos en una columna. Son permanencias del juego de la ruleta
En función de esos números aplico unas condiciones (sistemas de juego) y reviso que ocurre para llegar a unas conclusiones. Hacer eso manualmente es un infierno cuando la lista de números es de miles...
Debido a mis pocos conocimientos y aunque he navegado por Internet y he ido probando cosas me doy cuenta que el avance es muy lento con respecto al manejo del VB y que siempre me quedo bloqueado en diferentes puntos para seguir adelante y finalizar procedimientos.
Ahora, lo primero que quería automatizar es sobre una lista de números de 0 a 36 aleatoriamente, sobre cada número que me indique el número de veces que aparece un número después de ese número. Me explico con un ejemplo:
12
25
13
9
36
0
7
12
8
0
3
Quiero buscar el 0. En esta lista aparece en 2 ocasiones y quiero saber qué números salen después y cuantas veces.
En este caso sería:
Números después del 0
0 = 0 veces
1 = 0 veces
2 = 0 veces
3 = 1 vez
4 = 0 veces
5 = 0 veces
6 = 0 veces
7 = 1 vez
.
.
.
Hasta el número 36
Igualmente debería hacer lo mismo sobre los números del 1 al 36.
-
hola como no especificaste en donde lo estabas haciendo esto para que te sirva de ayuda yo use un listbox pero podrias usar lo mismo en un listview con columnas
no soy un experto y lo acabo de hacer deprisa y corriendo así que espero no lo tengáis en cuenta
Private Sub Form_Load()
List1.AddItem "1"
List1.AddItem "2"
List1.AddItem "3"
List1.AddItem "4"
List1.AddItem "1"
List1.AddItem "2"
List1.AddItem "3"
List1.AddItem "4"
Dim numeros(1 To 36)
For i = 0 To List1.ListCount - 1
If List1.List(i) > 0 And List1.List(i) <= 36 Then
numeros(List1.List(i)) = numeros(List1.List(i)) + 1
End If
Next
MsgBox numeros(1) 'aqui eliges el resultado que quieres ver o si quieres ver todos haces otro bucle for recorriendo todo el array y te los muestra
End Sub
un saludo
-
hola no pude aguantar jaja y me puse con un listview por si te sirve de ayuda
ListView1.ListItems.Add(, , "a").SubItems(1) = "1"
ListView1.ListItems.Add(, , "b").SubItems(1) = "2"
ListView1.ListItems.Add(, , "c").SubItems(1) = "3"
ListView1.ListItems.Add(, , "d").SubItems(1) = "4"
ListView1.ListItems.Add(, , "a").SubItems(1) = "1"
ListView1.ListItems.Add(, , "b").SubItems(1) = "2"
ListView1.ListItems.Add(, , "c").SubItems(1) = "3"
ListView1.ListItems.Add(, , "d").SubItems(1) = "4"
Dim numeros(1 To 36)
Dim valor As Integer
For i = 1 To ListView1.ListItems.Count - 1
valor = ListView1.ListItems.Item(i).SubItems(1)
If valor > 0 And valor <= 36 Then
numeros(valor) = numeros(valor) + 1
End If
Next
MsgBox numeros(1)
-
Hola,
gracias por vuestras respuestas y ayuda, lo que pasa que como os dije soy muy muy novato con este tema, entonces ahora mismo no lo entiendo muy bien.
¿Los números 1, 2 , 3 y 4 vendrían a ser un ejemplo de los números de la columna? ¿Habría que listar los números manualmente en el código como Items?
Perdonad mi ignorancia. Igualmente buscaré información sobre la instrucción esta que comentáis para intentar entenderla.
-
lo siento no te entendí bien lo que necesitas si lo puedes explicar mejor o pasarnos un ejemplo de lo que tienes o quieres
un saludo
-
Por supuesto, no hay problema. Lo explico otra vez.
Dispongo de una columna con números aleatorios que pueden ser desde el 0 hasta el 36. Pueden ser hasta miles de números.
Eso son lanzadas de bola de la ruleta francesa y necesito diseñar sistemas de juego.
Ahora estoy interesado en saber como calcular cuales son los números posteriores a cada número que sale. Pongo un ejemplo:
1
9
12
3
4
35
32
0
4
12
8
20
23
28
31
32
8
12
0
Vale, por ejemplo, de esta lista cogemos el 12 y vemos que han salido justo después los siguiente números:
Número 3 = 1 vez
Número 8 = 1 vez
Número 0 = 1 vez
Entonces hay 37 posibilidades de que salgan números diferentes después del 12, quiero saber cuales son los que más salen después de cada número, desde el 0 hasta el 36. Por ejemplo:
Después del 0:
0 = 20 veces
1 = 13 veces
2 = 12 veces
3 = 18 veces
.
.
.
36 = 10 veces
Luego lo mismo para el 1, para el 2, y así hasta el 36.
Si no me explico preguntadme de nuevo. Gracias.
-
hola donde tienes la columna en un listbox o en un listview o en una base de datos.
yo en este ejemplo que te hice sirve para ver que en la columna cuantas veces se repite el numero que tu quieras
Private Sub Form_Load()
List1.AddItem "1"
List1.AddItem "2"
List1.AddItem "3"
List1.AddItem "4"
List1.AddItem "1"
List1.AddItem "2"
List1.AddItem "3"
List1.AddItem "4"
Dim numeros(1 To 36)
For i = 0 To List1.ListCount - 1
If List1.List(i) > 0 And List1.List(i) <= 36 Then
numeros(List1.List(i)) = numeros(List1.List(i)) + 1
End If
Next
MsgBox numeros(1) 'aqui eliges el resultado que quieres ver o si quieres ver todos haces otro bucle for recorriendo todo el array y te los muestra
End Sub
el List1.AddItem "3" es para añadir los de ejemplo en la lista
Dim numeros(1 To 36) es un array para ir contando las veces que se repite cierto numero en su posición
el bucle for lo que hace es revisa todos los valores de la columna y en el array los va sumando.
MsgBox numeros(1) esto lo que hace es te muestras las veces que se a repetido por ejemplo el numero 1.
un saludo y perdón si no entendí bien
-
te he echo un pequeño ejemplo
https://www.dropbox.com/s/rdwclmwp9ajxdfb/numeros%20aleatorios.rar?dl=0 (https://www.dropbox.com/s/rdwclmwp9ajxdfb/numeros%20aleatorios.rar?dl=0)
un boton para ir añadiendo de uno en uno un numero aleatorio a la lista
y el otro te añadira 100 numero aleatorios
y el otro te dira las veces que se repite el numero dos por ejemplo
un saludo
-
Lo de contar los números ya lo tengo hecho en excel.
Yo tengo los datos en una hoja excel, de hecho no sé ni lo que es un listbox o listview :(
A lo mejor por mi falta de nociones va a ser difícil el tema. Agradezco tu interés.
-
ha vale tu estas usando excel no vb6 hace mucho tiempo que no programo en excel y no me acuerdo muy bien.
lo siento por no poder ayudarte mejor
-
Hola tienes que crear un array entre 0 y 36 luego recorres todas las celdas donde tienes los valores y sumas 1 en la posicion del array encontrado y asi almacenas en ese array la cuenta por cada numero me explico?
un ejemplo donde busca los valores en la columna A y en la columna B muestra cuantas veces salio cada numero, (en la B tenes que restar un numero ya que las celdas empiezan en 1
Option Explicit
Dim MiArray(0 To 36) As Integer
Public Sub MostrarRepetiones()
Dim i As Long
Dim ValorCelda As Integer
'limpio el array
Erase MiArray
'Recorro toda la columna "A" que es donde esta el hisotorial de numero
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row 'ulima celda de la columna A
ValorCelda = Cells(i, 1)
MiArray(ValorCelda) = MiArray(ValorCelda) + 1
Next
'Ahora muestro el resultado en la columna"B"
For i = 1 To 37
Cells(i, 2).Value = MiArray(i - 1)
Next
End Sub
cualquier duda pregunta.