Tema destacado: Sigue las noticias más importantes de elhacker.net en twitter!
Autor
|
Tema: Ayuda numero aletorio no repetirse (Leído 2,122 veces)
|
RHL
Conectado
Mensajes: 968
mental
|
holas buenas compañeros de foro  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  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
|
No te daremos el codigo, al menos ya lo pensaste como hacer? 
|
|
|
|
|
En línea
|
|
|
|
RHL
Conectado
Mensajes: 968
mental
|
jeje sii tengo para generar numero entre 1 a 10: 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
Mensajes: 780
4 Esquinas
|
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
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
Mejor pseudocodigo que el de 79137913 no vas a encontrar, asique esperamos tu codigo 
|
|
|
|
|
En línea
|
|
|
|
RHL
Conectado
Mensajes: 968
mental
|
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 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
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
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
Mensajes: 968
mental
|
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
 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_
|
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
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
Mira, leelo y entendelo, no te lo tendria que dejar pero bueno: 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
Mensajes: 968
mental
|
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  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
|
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
Mensajes: 2.831
I'Love...!¡.
|
. Me se ocurre aplicar el dicho Divide y Vencerás xP. 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 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
|
|
|
|
Edu
Desconectado
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
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  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
Mensajes: 780
4 Esquinas
|
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: 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
|
|
|
|
| Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con un numero
Dispositivos Móviles (PDA's, Smartphones)
|
iguanasranas
|
3
|
392
|
27 Septiembre 2006, 19:55
por phreackgsm
|
|
|
Como saber el numero fijo de un numero 902
Dudas Generales
|
BloCKeadO
|
0
|
1,294
|
19 Septiembre 2006, 13:29
por BloCKeadO
|
|
|
Guardar contenido de un textbox en un archivo .txt con nombre aletorio
Programación Visual Basic
|
hepy_92
|
2
|
1,372
|
15 Abril 2007, 20:15
por hepy_92
|
|
|
ayuda con un numero
Dispositivos Móviles (PDA's, Smartphones)
|
Togira Ikonoka
|
6
|
1,468
|
6 Julio 2009, 15:56
por Togira Ikonoka
|
|
|
[RETO] Comprobar si un numero dado es un numero de la suerte
« 1 2 3 4 »
Programación Visual Basic
|
Karcrack
|
53
|
5,070
|
17 Agosto 2010, 23:58
por Dessa
|
|