Foros del Web » Programación para mayores de 30 ;) » Java »

Crear random en java

Estas en el tema de Crear random en java en el foro de Java en Foros del Web. Hola! Necesito crear un numero random de 1 a 100 en java. He estado buscando en google, pero las maneras que vienen las veo algo ...
  #1 (permalink)  
Antiguo 09/09/2006, 12:31
 
Fecha de Ingreso: abril-2006
Mensajes: 133
Antigüedad: 18 años, 7 meses
Puntos: 2
Crear random en java

Hola!
Necesito crear un numero random de 1 a 100 en java. He estado buscando en google, pero las maneras que vienen las veo algo complicadas. Me imagino que debe haber alguna forma sencilla de hacer esto.
Podria alguien por favor ayudarme??

Gracias de antemano
  #2 (permalink)  
Antiguo 09/09/2006, 13:08
Avatar de locoporelrojo  
Fecha de Ingreso: abril-2006
Ubicación: Cali - Colombia
Mensajes: 98
Antigüedad: 18 años, 7 meses
Puntos: 2
Esta es la forma más sencilla que conozco:


Código PHP:
//Se multiplica por 100 para indicarle el limite de numeros que puede generar
int x = ((int) Math.random() * 100); 
  #3 (permalink)  
Antiguo 09/09/2006, 13:17
 
Fecha de Ingreso: abril-2006
Mensajes: 133
Antigüedad: 18 años, 7 meses
Puntos: 2
Muchas gracias por tu respuesta. Sin embargo no funciono, ya que siempre me devuele valor 0. Sera que estoy poniendo algo mal?

public void aleatorio(){
azar = ((int) Math.random() * 100);
System.out.println(azar);
}

En una pagina encontre esta forma que si me funciona
aleatorio = new Random();
//the statement below returns a number 0-9.
azar = aleatorio.nextInt(100);
System.out.println(azar);

Gracias.
  #4 (permalink)  
Antiguo 09/09/2006, 13:37
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 19 años, 1 mes
Puntos: 7
int x = new Double(Math.random() * 100).intValue();

ó

Random rand = new Random();
int x = rand.nextInt(100);

Así de sencillo... acabo de probar ambos códigos... y funcionan ambos... con la SDK 1.5

:)
__________________
El último TipdaR
  #5 (permalink)  
Antiguo 06/04/2008, 20:16
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años, 7 meses
Puntos: 1
Crear random en java

public class Main {


public static void main(String[] args) {
int azar=(int)(Math.random()*100);
System.out.println("azar="+azar);
}

}


tienes q tomar en cuenta el parentesis ya que no se trata que (int) afecta al Math sino al resultado total de aplicar el metodo random al Math
  #6 (permalink)  
Antiguo 21/09/2008, 15:54
 
Fecha de Ingreso: septiembre-2008
Mensajes: 1
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Crear random en java

Amigoaso ¿sabs? locoporelrojo se equivoco en una pequeña cosa por eso no funcionaba pero él tiene razón esa es la forma más sencilla de crear un random. t pongo un ejemplo que acabo de escribi ok? ahí t va
int aleatorio = (int)(Math.random()*100);
System.out.println(aleatorio);

El error estuvo en un paréntesis si t das cuenta, está haciendo un casting de double a int de modo que lo que debe convertir es el valor random multiplicado por 100 (luego convertirlo a entero), pero si tu no quieres que se guarde en una variable entera simplement declara oro tipo y le haces otro tipo d casting o declara una variable tipo double o float y no es necesario hacer naa más q poner Math.random()*100;

io creo q eso te ha de ayudar bastant como verás es la forma más cencilla q hay d crear un random (hay otras formas) pero esta es la más simple.
Adios see you cuidate
  #7 (permalink)  
Antiguo 12/01/2009, 10:10
 
Fecha de Ingreso: junio-2008
Ubicación: secreto
Mensajes: 65
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Crear random en java

Código:
public static int aleatorio(int max,int min){
		return (int)(Math.random()*(max-min))+min;		
}
este método devuelve un aleatorio entre dos números
  #8 (permalink)  
Antiguo 24/09/2009, 09:25
 
Fecha de Ingreso: septiembre-2007
Ubicación: Caracas
Mensajes: 13
Antigüedad: 17 años, 2 meses
Puntos: 0
Crear random en java

Aja buenos dias!!!

Tengo una pregunta y quiero ver si me ayudan..

Tengo que generar una referencia para ser guardado en una BD, la referencia tiene un campo de 18 caracteres, el hecho esta que esa referencia no se puede repetir, fijense lo que estoy haciendo estoy generando la referencia de la siguiente forma:

FechaCodUserNumeroRandom = yyyyMMddHHmmssUUrr

Fecha = yyyyMMddHHmmss
CodUser = UU
Random = rr

el hecho esta que puede ser que dos usuarios con el mismo coduser pueda acceder al mismo tiempo al metodo que me genera la referencia, lo que indicaria que la fecha y el coduser serian iguales, pero el problema es que random no me garantiza que dos numeros consecutivamente generados sean distintos, lo que hara que las referencias sean iguales....

Si tienen una solucion se los agradezco!!!!
  #9 (permalink)  
Antiguo 17/04/2010, 21:06
 
Fecha de Ingreso: abril-2010
Mensajes: 1
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Crear random en java

hola, necesito saber si la función randown de java si me garantiza total aleatoriedad de los números que ingreso, porque tengo entendido que vuelve a repetir la secuencia en un determinado tiempo y pues es que estoy haciendo un programa para jugar bingo y necesito que los números generados que son los de la balota del bingo sean aleatorios totalmente porque no tendria gracia el bingo...


gracias...........
  #10 (permalink)  
Antiguo 04/06/2010, 12:31
 
Fecha de Ingreso: mayo-2009
Mensajes: 81
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Crear random en java

he utilizado
int aleatorio = (int)(Math.random()*16);
System.out.println(aleatorio)
pero me salen números repetidos como lo puedo hacer para que no pase.
  #11 (permalink)  
Antiguo 29/08/2010, 17:21
 
Fecha de Ingreso: agosto-2010
Mensajes: 9
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Crear random en java

agnes20:

Puedes crear un método que guarde los resultados de el aleatorio en un arreglo, que lo guarde en una variable si es diferente a los que ya se encuentran en el arreglo.

Te pongo un código pero no lo he probado


Código JAVA:
Ver original
  1. int n_azar;
  2. int contador = 0;
  3. int n_num = //numero de aleatorios que necesites
  4.  
  5. int arreglo[] = new int [n_num];
  6.  
  7. for (int j=0; j<arreglo.length(); j++) {
  8. arreglo[j]=0;
  9. } //esto inicializa el arreglo
  10.  
  11. private void numAleatorio() {
  12.  
  13. int i = (int)(Math.random()*16);
  14. boolean exactos=false;
  15.  
  16.  
  17. for (int j=0; j<arreglo.length(); j++) {
  18.  
  19.  
  20. if(arreglo[j]==i) {
  21. exactos=true;
  22. }
  23.  
  24.  
  25. }
  26. if (exactos==false) {
  27. n_azar=i; //aquí se almacenará el último aleatorio obtenido
  28. arreglo[contador]=i;
  29. contador++;
  30. else {
  31. numAleatorio(); //llamado recursivo al método hasta que alguno que no esté en el arreglo
  32. }
  33. }
  34.  
  35.  
  36. }
  37. }

Última edición por Ryunosuke; 29/08/2010 a las 17:37
  #12 (permalink)  
Antiguo 30/08/2010, 21:34
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Crear random en java

Hola,

Cita:
Iniciado por Ryunosuke Ver Mensaje
... Puedes crear un método que guarde los resultados de el aleatorio en un arreglo, que lo guarde en una variable si es diferente a los que ya se encuentran en el arreglo. ...
El concepto debería funcionar aunque existen métodos más eficientes.

http://www.forosdelweb.com/f45/numer...repita-666115/
http://www.forosdelweb.com/f45/relle...epetir-498606/

Básicamente, creas la lista y la desordenas, por ejemplo,

Código Java:
Ver original
  1. public static final int MAX = 16;
  2.  
  3.     public static void main(String[] args) {
  4.         int i = 0, j = 0, k = 0;
  5.  
  6.         int rand[] = new int[MAX];
  7.         while (i < MAX) rand[i] = ++i;
  8.  
  9.         for (i = 0; i < MAX; i++) {
  10.             j = (int) (Math.random() * MAX);
  11.             k = rand[i]; rand[i] = rand[j]; rand[j] = k;
  12.         }
  13.     }

En rand[] tienes los números del 1 al 16 'desordenados' aleatoriamente.

Saludos,
  #13 (permalink)  
Antiguo 31/08/2010, 00:26
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: Crear random en java

No hace falta desordenarlos manualemente, basta con usar el API, como dicen por ejemplo aquí:

http://lospuntossobrelasjotas.blogsp...ar-o-rtfa.html
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #14 (permalink)  
Antiguo 31/08/2010, 02:34
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Crear random en java

Hola,

Cita:
Iniciado por GreenEyed Ver Mensaje
No hace falta desordenarlos manualemente, basta con usar el API, como dicen por ejemplo aquí: ...
El concepto es el mismo al ejemplo que escribí aquí:
http://www.forosdelweb.com/f45/relle...6/#post3124298

Pero cuando estas aprendiendo a programar es importante aprender a realizar estos procedimientos manualmente, muchas veces el lenguaje hace todo el trabajo necesario, y eso es muy bueno desde el punto de vista de productividad empresarial.

Por eso algunos dicen que Java no es un buen lenguaje para aprender, porque ya lo tiene todo hecho, no te da la oportunidad de pensar como resolver nuevos problemas porque ya los tiene todo hecho con un arsenal de librerías.

Y eso va a depender completamente del objetivo que se desea, si eres un programador con años de experiencia desarrollando algoritmos, la API te da la solución a todos a la mayoría de problemas. Si estas aprendiendo a diseñar algoritmos y aprendiendo a usar arrays, ciclos, etc., entonces hay que hacerlo manual, sino nunca vas a aprender a realizar un programa que te resuelva un problema nuevo personal que no está en la API.

Saludos,
  #15 (permalink)  
Antiguo 31/08/2010, 03:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: Crear random en java

La pregunta original dice... "debe haber una forma más sencilla de hacer esto". No dice "estoy aprendiendo a programar formas de desordenar una lista etc. etc. . Al igual que otro que dice que necesita una lista aleatoria para un bingo, no aprender teorías sobre Random etc.

Si, luego he visto que en los enlaces estaba la misma técnica, pero la mayoría de los novatos no siguen los enlaces y se quedan con la solución que les das .

De todas formas, estoy muy de acuerdo en que Java no es un buen lenguaje para aprender a programar de forma genérica. Es un lenguaje pensado para "solucionar el problema" y , IMHO, otra cosa que hay que aprender es a usar el lenguaje como toca, cosa que mucha gente no hace y acaban reinventando la rueda.

Por eso si no lo piden explícitamente, creo que es mejor no liarlos con la forma larga de hacer las cosas. Otra cosa sería si el objetivo fuese aprender sobre los procesos aleatorios, su eficiencia etc. etc. O sea que entiendo lo que dices, pero en este caso no veo la razón.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #16 (permalink)  
Antiguo 31/08/2010, 14:03
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Crear random en java

Hola GreenEyed,

Cita:
Iniciado por GreenEyed Ver Mensaje
... Si, luego he visto que en los enlaces estaba la misma técnica, pero la mayoría de los novatos no siguen los enlaces y se quedan con la solución que les das . ...
No veo el inconveniente tampoco, yo realmente mostré las dos técnicas y explique la diferencia, ya es cuestión de cada quien seguir los enlaces, investigar y aplicar el mejor método que se adapte a sus necesidades. Si no siguieron los enlaces ... ya es problema de cada quien.

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

SíEste tema le ha gustado a 15 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 12:58.