elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 03:07  


Tema destacado: Sigue las noticias más importantes de elhacker.net en ttwitter!

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  Ayuda numero aletorio no repetirse
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda numero aletorio no repetirse  (Leído 2,122 veces)
RHL


Conectado Conectado

Mensajes: 968


mental


Ver Perfil
Ayuda numero aletorio no repetirse
« en: 23 Mayo 2011, 00:15 »

holas buenas compañeros de foro  ;D
quisiera saber si me pueden ayudar a resolver este problema:
quiero crear una funcion que genere numeros aleatoreos de entre
1 a 10 pero no quiero q se repita un numero ya mostrado :P

digamos q al final me tiene q mostrar el intervalo de entre los 10 numeros pero en orden aleatoreo y sin repeticion y si podria con un codigo muy simplificado y sin tantas variables posibles esa es mi idea porq podria usar muchas variables pero eso es lo q no quiero :p
creo q me doy a entender amigos de ante mano gracias!


En línea
raul338
Moderador
***
Conectado Conectado

Mensajes: 2.371


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Ayuda numero aletorio no repetirse
« Respuesta #1 en: 23 Mayo 2011, 00:55 »

No te daremos el codigo, al menos ya lo pensaste como hacer? :P


En línea

RHL


Conectado Conectado

Mensajes: 968


mental


Ver Perfil
Re: Ayuda numero aletorio no repetirse
« Respuesta #2 en: 23 Mayo 2011, 01:01 »

jeje sii
tengo para generar numero entre 1 a 10:

Código
randomize
T = Int((10 * Rnd) + 1)
 

luego noc como hacer para verificar si ese numero ya lo e mostrado  :-\
talvez asignarlo a una variable y verificar con un if noce  :-\
« Última modificación: 23 Mayo 2011, 03:07 por raul338 » En línea
79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: Ayuda numero aletorio no repetirse
« Respuesta #3 en: 23 Mayo 2011, 01:05 »

HOLA!!!

Bueno, te digo, primero para verificar que no lo mostraste tenes que guardar todos los numeros mostrados, recomiendo un vector.

Luego, generas el numero aleatorio y verificas con un bucle que no este en el vector, si estaba, lo generas de nuevo, si no estaba lo guardas y lo mostras.

Espero que entiendas lo que digo.

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*                                                          Resumenes Cs.Economicas
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Ayuda numero aletorio no repetirse
« Respuesta #4 en: 23 Mayo 2011, 01:06 »

Mejor pseudocodigo que el de 79137913 no vas a encontrar, asique esperamos tu codigo :P
En línea
RHL


Conectado Conectado

Mensajes: 968


mental


Ver Perfil
Re: Ayuda numero aletorio no repetirse
« Respuesta #5 en: 23 Mayo 2011, 01:37 »

trate de hacer lo que dijo 79137913 pero creo q no lo logre porq
en el vector apareces algunos numero repetidos :/ noce en que estoy fallando este
es el codigo que hice

Código
Dim n As Integer
Dim a(9) As Integer
Dim m As Integer
Dim z As Integer
 
 
For z = 1 To 10 ' generar 10 numero aleatoreos
   Randomize
   n = Int((10 * Rnd) + 1) ' genero el numero aleatoreo = n
   
   For m = 0 To 9
       If a(m) <> n Then a(z - 1) = n
   Next
Next
« Última modificación: 23 Mayo 2011, 03:07 por raul338 » En línea
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Ayuda numero aletorio no repetirse
« Respuesta #6 en: 23 Mayo 2011, 01:40 »

Mmm esque no es asi, usa el Do-While para que guarde todos los numeros generados mientras no sea igual a uno que ya se guardo, es decir, podrias crear una funcion, Repetido() as Boolean para que sea la verificacion en el while
En línea
RHL


Conectado Conectado

Mensajes: 968


mental


Ver Perfil
Re: Ayuda numero aletorio no repetirse
« Respuesta #7 en: 23 Mayo 2011, 01:47 »

Mmm esque no es asi, usa el Do-While para que guarde todos los numeros generados mientras no sea igual a uno que ya se guardo, es decir, podrias crear una funcion, Repetido() as Boolean para que sea la verificacion en el while

 :P es q yo pensaba en generar el numero aleatoreo y guardarlo en el vector
luego generar el otro y verificar si ya existia en el vector con el bucle for
pero pana tu idea no la entiendo   :-\
En línea
_katze_

Desconectado Desconectado

Mensajes: 99



Ver Perfil WWW
Re: Ayuda numero aletorio no repetirse
« Respuesta #8 en: 23 Mayo 2011, 02:20 »

generas el numero en primera medida...y la guardas en una variable termporal...en una iteracion recorres el vector si esta salis de la iteracion y generas de nuevo...y si esta lo guardas y lo mostras
En línea
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Ayuda numero aletorio no repetirse
« Respuesta #9 en: 23 Mayo 2011, 02:21 »

Mira, leelo y entendelo, no te lo tendria que dejar pero bueno:

Código
Option Explicit
 
Public Sub Form_Load()
 
Dim n As Integer
Dim a(9) As Integer
Dim m As Integer
Dim i As Integer
 
 
For i = 0 To 9
 
Do
Randomize
 
m = Int((Rnd * 10) + 1)
 
Loop While (Existe(m, a()))
 
a(i) = m
 
Next i
 
For i = 0 To 9
 
MsgBox a(i)
 
Next
 
End Sub
 
 
 
Function Existe(m As Integer, a() As Integer) As Boolean
Dim num
 
For Each num In a()
If (m = num) Then Existe = True
Next
 
End Function
 
 
En línea
RHL


Conectado Conectado

Mensajes: 968


mental


Ver Perfil
Re: Ayuda numero aletorio no repetirse
« Respuesta #10 en: 23 Mayo 2011, 02:33 »

generas el numero en primera medida...y la guardas en una variable termporal...en una iteracion recorres el vector si esta salis de la iteracion y generas de nuevo...y si esta lo guardas y lo mostras

amigo si ese era error en mi code q no salia del for le agrege exit for pero luego no encontre lo demas :/

@XXX-ZERO-XXX

 :o  ;D  gracias XXX-ZERO-XXX  se te agradece mucho si funciona exactamente!  ;-)
« Última modificación: 23 Mayo 2011, 03:08 por raul338 » En línea
raul338
Moderador
***
Conectado Conectado

Mensajes: 2.371


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Ayuda numero aletorio no repetirse
« Respuesta #11 en: 23 Mayo 2011, 03:10 »

Fijate bien como hace, aunque si bien hay otras formas de hacerlo :)

Se me ocurre hacer un array del 1 al 10 con respectivos valores, y despues con un bucle ir devolviendolos en forma desordenada siempre y cuando el valor a devolver no sea 0, controlandolo con un contador de los numeros devueltos. Seria buen ejercicio ;)
En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda numero aletorio no repetirse
« Respuesta #12 en: 23 Mayo 2011, 06:42 »

.
Me se ocurre aplicar el dicho Divide y Vencerás xP.

Código:
NumerosAleatorios (Numero Inicio, Numero Final, Array de valores a no considerar) {
MatrixRangos() = Realizar una búsqueda de valores para verificar si alguno de los numeros del array estan entre el valor de Inicio o el valor del Final: (un For Next bastara) , y generamos cortes de array's por ejemplo (  Inicio=0 final=10 array={5,8}  este paso genera 3 array que son:  {0,4},{6,7},{9,10} )
iIndice = Generamos un numero aleatorio desde Lbound(MatrixRangos()) hasta Ubound(MatrixRangos())
Retornamos el numero que se genera un numero aleatorio según los rangos que indique MatrixRangos( iIndice )(0) y MatrixRangos( iIndice )(1)
}

@XXX-ZERO-XXX

Código
 
Function Existe(m As Integer, a() As Integer) As Boolean
Dim num
For Each num In a()
If (m = num) Then Existe = True: exit for ' // no tiene caso seguir en el for Each si ya se encontro.Next
End Function
 
 

P.D.: No hice el codigo por que me tengo que ir a bañar xP ya lo hago.

Temibles Lunas!¡.
.
« Última modificación: 23 Mayo 2011, 06:52 por BlackZeroX▓▓▒▒░░ » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
Edu


Desconectado Desconectado

Mensajes: 1.082


Ex XXX-ZERO-XXX


Ver Perfil
Re: Ayuda numero aletorio no repetirse
« Respuesta #13 en: 23 Mayo 2011, 07:32 »

amigo si ese era error en mi code q no salia del for le agrege exit for pero luego no encontre lo demas :/

@XXX-ZERO-XXX

 :o  ;D  gracias XXX-ZERO-XXX  se te agradece mucho si funciona exactamente!  ;-)

Bueno pero lee el codigo, entendelo, fijate que use for-next, foreach-next, do-loop while, aprendelos bien.

Y black.. si.. se me paso eso pero si el codigo lo hice rapido, no pretendia optimizar velocidad xD Pero es buen consejo para el que pregunta ;)
En línea
79137913


Desconectado Desconectado

Mensajes: 780


4 Esquinas


Ver Perfil WWW
Re: Ayuda numero aletorio no repetirse
« Respuesta #14 en: 23 Mayo 2011, 13:49 »

HOLA!!!

xxxZEROxxx, Indesta el codigo, se lee mejor asi, y no es necesario un Do loop, se puede hacer con for, editando el valor de las variables del for XD.

Raul100, viendo tu manera de pensar, arme este codigo que funciona con tu estructura:
Código
Dim A(9) As Long
Dim X As Long
Dim Y As Long
   Randomize
   For X = 0 To 9
       A(X) = Int(Rnd() * 10) + 1
       For Y = 0 To 9
           If A(X) = A(Y) And Y <> X Then X = X - 1: Exit For
       Next
   Next

GRACIAS POR LEER!!!
« Última modificación: 23 Mayo 2011, 13:53 por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*                                                          Resumenes Cs.Economicas
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines