Foros del Web » Programando para Internet » Javascript »

Codigo JavaScript MUY DIFICIL de entender

Estas en el tema de Codigo JavaScript MUY DIFICIL de entender en el foro de Javascript en Foros del Web. Hola, deseo desarrollar un código que me muestre aleatoriamente números pero sin que estos sean repetidos, buscando por Internet he encontrado este JavaScript : homepage.ntlworld.com/kayseycarvey/jss2p14.html ...
  #1 (permalink)  
Antiguo 19/08/2006, 13:51
 
Fecha de Ingreso: agosto-2006
Mensajes: 24
Antigüedad: 17 años, 8 meses
Puntos: 1
Codigo JavaScript MUY DIFICIL de entender

Hola, deseo desarrollar un código que me muestre aleatoriamente números pero sin que estos sean repetidos, buscando por Internet he encontrado este JavaScript:

homepage.ntlworld.com/kayseycarvey/jss2p14.html

<SCRIPT Language = JavaScript>

function getNumbers() {
temp = 0
newnumber = 0
document.frmOne.taAll.value = ""
TA = document.frmOne.taAll
lottery = new Array(49)
for (i = 1; i < 50; i++) {
lottery[i] = i
}
for (i = 1; i < 50; i++) {
newnumber = (Math.random() * 49) + 1
newnumber = parseInt(newnumber, 10)
temp = lottery[i]
lottery[i] = lottery[newnumber]
lottery[newnumber] = temp

}
for (i = 1; i < 50; i++) {
TA.value = TA.value + "lottery[" + i + "] = " + lottery[i] + "\n"
}
}

</SCRIPT>

Ahora bien, la ayuda viene aquí, si pudieras ayudarme a entender este código, es sobre estas TRES LINEAS de codigo ¿Por qué intercambian posiciones? ¿Qué relación hay entre unas y otras? o ¿Por qué lo hacen en ese orden?:

temp = lottery[i]
lottery[i] = lottery[newnumber]
lottery[newnumber] = temp


Imagino que el intercambio de pasiciones entre una variable y otra, genera numeros sin que estos se repitan, pero para mí, es un verdadero CAOS entender estas TRES LINEAS, he dedicado buen tiempo a entenderlo y no lo he logrado.

Saludos y GRACIAS.
  #2 (permalink)  
Antiguo 20/08/2006, 08:55
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola anje53, bienvenido a los foros :

Esas 3 líneas son un intercambio de valores entre 2 elementos de un array, aunque no he mirado detenidamente el resto del código y no sabría decirte si el código es eficiente.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 20/08/2006, 12:29
 
Fecha de Ingreso: agosto-2006
Mensajes: 24
Antigüedad: 17 años, 8 meses
Puntos: 1
anje53 (El interasado)

Soy el que ha hecho esta pregunta, el código funciona correctamente, lo que no entiendo cual es la logica del intercambio de valores entre variables.
Esta es la página donde he encontrado el script:
homepage.ntlworld.com/kayseycarvey/jss2p14.html
  #4 (permalink)  
Antiguo 21/08/2006, 04:26
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Vamos a ver, lo que hace primero es crear una matriz (array) de 50 elementos. A cada elemento le da el valor de su ordinal, es decir, al elemento 1 se le da el valor 1, al 2 se le da el 2, etc. Posteriormente intercambia los valores de los distintos elementos. Este intercambio es un ingenioso sistema de hacer que ningun valor se repita. Empieza con el primer elemento, busca un valor aleatorio del 1 al 50 y sale, por ejemplo el 23. Bien, pues entonces lo que hace es intercambiar el valor del primer elemento (1) por el del elemento 23 (23). Pasa al segundo elemento y hace exactamente lo mismo. Imaginate que al buscar el número aleatorio en el segundo elemento también sale el 23, bien pues el segundo elemento tomaría el valor del elemento 23 (1) y el elemento 23 tomaría el del segundo elemento (2).

Así hasta completar los 50 elementos. En realidad lo que hace es barajar los distintos valores... no sé si me explico...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 23/08/2006, 08:08
 
Fecha de Ingreso: agosto-2006
Mensajes: 24
Antigüedad: 17 años, 8 meses
Puntos: 1
anje53

Gracias KarlanKas!!!
Te has explicado la mar de bien. Y tienes razón es un Script bien currado,
y he visto este mismo código en tres páginas distintas, tanto que hasta me dio la curiosidad de entender su funcionamiento de arriba abajo.
Saludos!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:33.