Ayuda numero aletorio no repetirse

Iniciado por x64core, 23 Mayo 2011, 00:15 AM

0 Miembros y 4 Visitantes están viendo este tema.

x64core

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!

raul338

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

x64core

#2
jeje sii
tengo para generar numero entre 1 a 10:

Código (vb) [Seleccionar]

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  :-\

79137913

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!!!
"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*

Edu

Mejor pseudocodigo que el de 79137913 no vas a encontrar, asique esperamos tu codigo :P

x64core

#5
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 (vb) [Seleccionar]
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

Edu

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

x64core

Cita de: XXX-ZERO-XXX en 23 Mayo 2011, 01:40 AM
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   :-\

_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

Edu

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

Código (vb) [Seleccionar]

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