Título: desglose del un método generar numero aleatorio sin que se repita JAVA Publicado por: elm0n0 en 24 Abril 2015, 16:52 pm estoy intentando comprender por que este código me da un numero aleatorio sin repetirse y por mas vueltas que le doy no consigo comprenderlo.
Lo he intentado pasar a un papel siguiendo el bucle pero en el papel me ocurre que si que se pierde algún numero mientras que ejecutandolo en la maquina virtual funciona perfectamente y sinceramente no me gusta copiar código en mis programas que no comprenda. Espero alguien pueda echarme una mano a comprenderlo. Código: public void numeroAleatorioSinRepetirse() {// aquí genero el numero Título: Re: desglose del un método generar numero aleatorio sin que se repita JAVA Publicado por: daryo en 26 Abril 2015, 15:29 pm bueno creo(no lo he probado) que funciona asi:
dentro del array numeros pone numeros en orden desde cero 0,1,2,3 luego cambia el orden de los numeros 1,0,3,2 usando posiciones aleatorias con math.random Título: Re: desglose del un método generar numero aleatorio sin que se repita JAVA Publicado por: elm0n0 en 26 Abril 2015, 19:00 pm Si, si funciona así pero no comprendo por que no repite ninguna posición por que al usar el random crea un aleatorio y en la segunda vuelta del bucle existe la posibilidad de que se repita la posición o eso es lo que me parece a mí
En la practica funciona perfectamente pero no comprendo el porque. Título: Re: desglose del un método generar numero aleatorio sin que se repita JAVA Publicado por: ivancea96 en 26 Abril 2015, 19:35 pm Código Siempre intercambia el número con uno en una posición inferior. Así, todos los números serán (probablemente) intercambiados. Siempre existe la posibilidad de que rand sea siempre la misma posición. Título: Re: desglose del un método generar numero aleatorio sin que se repita JAVA Publicado por: daryo en 26 Abril 2015, 19:41 pm edito:lo que dice ivancea es cierto no me habia dado cuenta pero de todas formas no pasa nada si repite.
porque solo esta intercambiando de posiciones y como los numeros van en orden. miralo de esta forma 0,1,2,3 luego toma el numero en la posicion 0 es decir el numero cero y decide intercambiarlo por un numer al azar asi que toma el 2 por ejemplo 2,1,0,3 toma el numero en la posicion 1 es decir el 1 y decide intercambiarlo por el 0 2,0,1,3 toma el numro de la posicion 2 el 1 de nuevo y lo cambia con el 1 1,0,2,3 por ultimo toma el numero de la posicion 3 y lo cambia con si mismo(algo improbable) 1,0,2,3 Título: Re: desglose del un método generar numero aleatorio sin que se repita JAVA Publicado por: elm0n0 en 30 Abril 2015, 01:00 am muchas gracias chicos, esta tarde conseguí entender lo del cambio de posición y estoy aplicándolo en otra parte del programa muchísimas gracias :).
Si hay forma de cerrar el post que lo cierre alguien o se me informe de como hacerlo XD. |