• Jueves 14 de Noviembre de 2024, 21:19

Autor Tema:  problema con el random netbeans  (Leído 3674 veces)

mr_wayuu

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
problema con el random netbeans
« en: Sábado 24 de Octubre de 2009, 18:10 »
0
buenas, necesito manejar un random en netbeans para hacer un juego de black jack, pero no se como manejar las letras y todos los numeros para q salgan aleatoriamente, agradeceria si alguien me puede ayudar con este problema, gracias.

gophlb

  • Visitante
Re: problema con el random netbeans
« Respuesta #1 en: Domingo 25 de Octubre de 2009, 08:48 »
0
Cita de: "mr_wayuu"
buenas, necesito manejar un random en netbeans para hacer un juego de black jack, pero no se como manejar las letras y todos los numeros para q salgan aleatoriamente, agradeceria si alguien me puede ayudar con este problema, gracias.
el random, salvo que me este confundiendo, te da lo mismo que sea netbeans, eclipse, intellij o un editor de texto, porque el random es de java, no del ide :)

en cualquier caso y contestando a tu pregunta:
Math.random() te dara un valor double entre 0.0 y 1.0 (esto es informacion basica del javadoc de java, que puedes consultar en internet o incluso desde el mismo netbeans)

ahora lo que necesitas es saber que entorno de numeros necesitas y que entorno de letras necesitas.

es decir, supongo que necesitaras numeros comprendidos entre 0 y 1000 (por ejemplo)
y si miras una tabla ASCII, las letras estaran entre el numero 65 y el 90 si son mayusculas o el 97 y 122 si quieres minusculas

ahora tendrias dos opciones:
1- hacerte un array cuyas posiciones esten ocupadas por cada una de las letras del alfabeto. ahora haces un random() y el numero que obtengas lo multiplicas por (array.length-1). A esto le haces un Math.floor(), obteniendo una letra de ese array con ese indice

Vemos diferentes ejemplos, suponiendo que tenemos 28 letras y que el array va desde la posicion 0 hasta la 27:
Código: Java
  1.  
  2. random() == 0.0    ->   Math.floor(0.0 * 27)    = 0     tienes la letra de la posicion 0
  3. random() == 1.0    ->   Math.floor(1.0 * 27)    = 27   tienes la letra de la posicion 27
  4. random() == 0.53  ->   Math.floor(0.53 * 27)  = 14    tienes la letra de la posicion 14
  5. random() == 0.57  ->   Math.floor(0.57 * 27)  = 15    tienes la letra de la posicion 15
  6.  
  7.  

2- Prescindir de tu array y hacerlo mediante la tabla ASCII. Este metodo es un poco mas complejo y, a falta de probarlo, creo que seria algo asi:
Obtienes tu random() y aplicas la siguiente formula:

indiceMinimoASCII + [(miRandom * (indiceMaximoASCII - indiceMinimoASCII)) / (indiceMaximoRandom - indiceMinimoRandom)]

Asi, si no me equivoco, tendrias el indice ASCII de la letra que buscas, y luego solo tendrias que convertirlo a Char mediante el metodo correspondiente.





Sinceramente, creo que te seria infinitamente mas facil de hacer y depurar por el primer metodo.



Sobre los numeros, como no te vas a hacer un array con mil numeros (o los que necesites), no te queda mas remedio que aplicar la formulita de conversion entre entornos:
int numeroParaBlackjack = Math.floor( [ ( Math.random() * (numeroMaximoDeMiEntorno - numeroMinimoDeMiEntorno) ) / (1.0 - 0.0) ]);


De todas formas, estoy diciendote todas estas cosas de cabeza, asi que compruebalo e investigalo bien investigado por si acaso me he confundido. Estas son mis dos soluciones, lo cual no implica que sean las mejores ni las unicas.

Suerte ;)