Generar un número aleatorio

31/ene/2007 Java , 31 Comentarios
java

Múltiples son las situaciones donde podemos necesitar la generación de un número aleatorio. Sin ir más lejos sería un buen ejemplo a la hora de generar una contraseña.

Java nos proporciona la clase Random dentro de la librería java.util. Dicha clase nos permite generar múltiples números aleatorios, independientemente de la naturaleza de estos: int, float, double, long,...

Utilizar la clase es muy sencillo. Lo primero que tenemos que hacer es crear una instancia de dicha clase. Veamos la línea de código:

  1. Random r = new Random();

Posteriormente deberemos de invocar al método nextInt(). Este método ya nos devolverá un número aleatorio.

  1. System.out.println(r.nextInt());

El principal inconveniente de este método es que el número aleatorio dentro del rango comprendido entre 2-32 y 232 . Si lo que queremos es acotar el rango, podemos pasar el límite como parámetro del método .nextInt(valor). En este caso se calculará en el rango desde 0 a valor-1. Es por ello que si queremos trabajar con el valor igual al límite, entonces deberemos de pasar como parámetro valor+1.

De esta manera el código será el siguiente:

  1. int limite=10;
  2. System.out.println(r.nextInt(limite+1));

Vídeos sobre Java

Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

31 comentarios en “Generar un número aleatorio”

Víctor Cuervo

Jose

Sí, esto es útil. Pero se te olvida recordar que no puedes establecer un rango por defecto en el calculo de un random para “long” CON RANGOS. Ya que no existe .nextLong(Long plong) … por tanto, cual seria la solucion en este caso?

Víctor Cuervo

Víctor Cuervo

@Yohana,

¿Cómo podemos ayudarte? ¿Cual es tu duda?

Saludos. Víctor.

Víctor Cuervo

Yohana

Hola a todos soy yohaname ayudan soy nueva y no tendo un codigo me ayudan.

Víctor Cuervo

Cecil

I love what you guys are up too. Such clever work and reporting!
Keep up the awesome works guys I’ve added you guys to blogroll.

Víctor Cuervo

bisamrk

hola a todos, quiero que me ayuden, no se como implementar el metodo randomco en java para datos de tipo object

Víctor Cuervo

Xinex

Aprender mas sobre java asp… kiero reforzar mi logika

Víctor Cuervo

Loo

una pregunta alguien tiene un metdodo para generar un ID para un item es que no se como expresarlo en el perfil de la clase item realmenete no tengo idea y no llevo mucho en esto de la programacion orientada a objetos :S porfavor si alguien tiene una sugerencia o algun codigo en el que pueda guiarme se los agradecere

Víctor Cuervo

dlltsuki (David xD)

Aqui te dejo un codigo para unvector de 10 elementos, espero que te sirva:

import java.lang.*;
import java.util.Random;

public class vector {

public vector() {
}

static int vec[]=new int[10]; //inicializa el vector de 10 elementos

//Funcion que checa que ese numero no se encuentre ya en el vector
static boolean repetidos(int j,int aux){
for(int i=0; i<j; i++) if(vec[i]==aux) return true; //si ya se encuentra regresa true
return false; //si no se encuentra regresa false
}

public static void main(String[] args) {
int aux;
for(int i=0; i<10; i++){
aux=(int)Math.floor(Math.random()*100+1); //variable aux en la que se guarda el numero generado aleatoriamente
if(!repetidos(i,aux)) vec[i]=aux; //si regresa false se agrega el numero
else i–; //si regresa true se decrementa i para que se genere otro numero distinto
}
for(int i=0; i<10; i++) System.out.println(vec[i]);
}
}

El compilador que use es JCreator.

Saludos.

Víctor Cuervo

Marco Rivera del Carpio Nontol

Podrias publicar el codigo en Java del siguiente ejercicio que te muestro,es de un trabajo:

Crear un vector de 10 o n elementos con numeros aleatorios .Se debe crear una funcion que no permita que se repita los numeros generados
(aleatorios) el cual se le asignara al vector.

De preferencia hazlo de forma simple ,ya que recien estoy aprendiendo programacion con el metodo de resolucion que dio pista mi profesor y es utilizar y asignar un valor boolean =false al comienzo de una funcion creo .

Víctor Cuervo

David

como que capture 3 preguntas??
de donde las va a capturar o como?

y como con un for, dices que para cada ciclo imprima una de las 3 , pero sin las que ya puso??

Saludos!!

Víctor Cuervo

CHICA MAX

HOLA SI ME PUEDEN AYUDAR HA SOLUCIONAS UN EJERCICIO EN JAVA QUE CAPTURE TRES PREGUNTAS Y LAS IMPRIMA DE FORMA ALEATORIA CON EL CICLO FOR

Víctor Cuervo

Nicolas

ayudenme!!!!!!!!!!!!!!!! Como hacer que un programa genere N números del 1 al 100. El programa debe detenerse cuando 2 números consecutivos sean iguales y deberá informar cuantos números se han generado hasta el momento.

Víctor Cuervo

tania

hola necesito que por favor me ayuden a hacer un programa que me diga el mayor de tres numeros y que no permita introducir letras y que de error con numeros negativos

Víctor Cuervo

david

GRaciá vale mia…. me sirvio el metodo para calcular el nuevo limite…

Víctor Cuervo

yanina

hola quisiera saber si me pueden ayudar con esto: generar 1000 numeros aleatorios en el rango [10,20) y construir un histograma que muestre los resultados de manera tabular

Víctor Cuervo

Kasumi

hola yo quiero implementar la generación de numeros aleatorios para un programa de simulación de llega de autobuses, como podria hacerle??

Víctor Cuervo

David

Bueno pues si era ese el problema, lo que pasaba era que no incrementabas m y se seguian repitiendo estos dos ciclos hasta que se desbordaba la pila:

public void LlenarSudoku(){
N=(int)(Math.random()*9+1);
ValidarSudoku();
}
public void ValidarSudoku(){
for(int l=0;l<3;l++){
for(int m=0;m<3;){ <——————–checa aqui falta m++
if(a[J][K][l][m]==N||a[J][l][L][m]==N||a[l][K][m][M]==N){
LlenarSudoku();

Víctor Cuervo

David

Bueno pues la verdad no le entendi muy bien a tu codigo, bueno pues ni lo cheque todo, pero creo que el problema es que se desborda la pila y creo que el problema esta en estas dos funciones:

public void LlenarSudoku(){
N=(int)(Math.random()*9+1);
ValidarSudoku(); //****************************************
} *
public void ValidarSudoku(){ *
for(int l=0;l<3;l++){ *
for(int m=0;m<3;){ *
if(a[J][K][l][m]==N||a[J][l][L][m]==N||a[l][K][m][M]==N){ *
LlenarSudoku(); //*****************************************

Víctor Cuervo

Guillermo

Hola oye tengo un problema es que quiero hacer un sudoku en java en donde usare randoms para asi tener una infinidad de ejercicios y varias condidionales para verificar que no se repitan, teoricamente esta bien mi codigo pero el problema es que genera el programa tantos numeros que se traba (me produce un error llamado StackOverflow si alguien sabe que es) asi que llegue a la conclusion de que TENGO QUE GENERAR UN NUMERO DEL 1 AL 9 PERO ACLARANDO EXCEPCIONES PARA EVITAR EL ERROR espero que me respondan saludos
PD: este es mi programa por si lo quieren modificar
/**
* @(#)GenerarSudoku.java
*
*
* @author
* @version 1.00 2009/4/3
*/

public class GenerarSudoku {
int N=0;
int [][][][] a;
int J=0;
int K=0;
int L=0;
int M=0;
boolean c=true;
public void HacerSudoku(){
a= new int [3][3][3][3];
ValidarSudoku();
}
public void LlenarSudoku(){
N=(int)(Math.random()*9+1);
ValidarSudoku();
}
public void ValidarSudoku(){
for(int l=0;l<3;l++){
for(int m=0;m<3;){
if(a[J][K][l][m]==N||a[J][l][L][m]==N||a[l][K][m][M]==N){
LlenarSudoku();
}else m++;
}
}
a[J][K][L][M]=N;
M++;
if(M==3){
M=0;
L++;
if(L==3){
K++;
L=0;
M=0;
if(K==3){
K=0;
J++;
if(J==3){
J=0;
ImprimirSudoku();
}else LlenarSudoku();
}else LlenarSudoku();
} else LlenarSudoku();
}else LlenarSudoku();
}

public void ImprimirSudoku(){
for(int j=0;j<a.length;j++){
for(int k=0;k<a.length;k++){
System.out.println(“arreglo “+j+k);
for(int l=0;l<a.length;l++){
for(int m=0;m<a[l].length;m++){
if(m==2){
System.out.println(a[j][k][l][m]+” “);
}else System.out.print(a[j][k][l][m]+” “);
}
}
}
}
System.exit(0);
}

public static void main(String[] args) {
GenerarSudoku GS=new GenerarSudoku();
GS.HacerSudoku();
}
}

Víctor Cuervo

carlos

lo que quiero saber es que es un numero aleatorio, porfavor, es que no la capto…

Víctor Cuervo

maruja

por fa ayudeme si este es el ejercicio
ingresar un numero en palabras y nostrar en numero

Víctor Cuervo

Aldo

Hola el programa esta muy bien pero tego una duda si yo quiero manda imprimir 100 numeros en un ciclo. nunca se van a repetir los numeros??? en almenos un caso

Víctor Cuervo

rodrigo

veo que no saben mucho de programacion
para a prender programacion solo deven ingresar a la pagina
siguiente donde encontraras todo lo que nesecita un programador

http://lineadecodigo.com/2007/01/31/generar-un-numero-aleatorio/

Víctor Cuervo

Camilo Baez

No deseas algo mas angy????, posiblemente q te lleve una malteada a la cama mientras ves como hacemos tu trabajo????

Víctor Cuervo

angy

hola me pueden ayudar para generar numeros aleartorios q den como opcion 3 palabras constantes , yq reaslicen un juego con lo es el del ahorcado q el usuario adivine y q de acuerdo al tamaño de la palabra q escojio sean las oportunidades admeas de mostrar al usuario la palabra pero con asteriscos y cuando vaya adivinando la letra se vayan destapando pro favoir mil gracias

Víctor Cuervo

JESSO AG.

HOLA ME PUEDEN AYUDAR? REALIZAR UN PROGRAMA DONDE SE SOLUCIONE EL METODO DE GAOS JORDAN UTILIZANDO ARREGLOS PRINCIPALMENTE ME HARIAN UN GRAN FAVOR POR FAVOR AYUDENME..

Víctor Cuervo

JoelAlberto

que bien, entonces me podrian ayudar para con esta problematica?
Realizar un programa que genere 100 números aleatorios exclusivamente -1,0 1 y 2 para que en caso que sea

-1 deberas imprimir datos de una clase Llamada Futbol (equipos, ganadores, subacampeon etc.)
0 debe imprimir e instanciar de una clase llamada Béisbol datos en base a dicho tema

1 imprimir datos de la clase Carreras en relación a la formula 1
Y por último 2 para imprimir datos de un alumno tomando en cuenta la clase anterior del ejercicio 1

Usa switch para controlar el tipo de impresión en una clase llamada Examen
.Mi correo es Joel_ack@hotmail.com, envienmelo si lo lograron, jejej seria muy grato

Víctor Cuervo

Katzide

Hey yo se como, trata de implementar el método ya que no corre a la primera:

import java.util.*
public class Aleatorio extends Random {
public int nextInt(int inferior, int superior) {
int i;
i=nextInt();
i=inferior+(Math.abs(i) % (superior-inferior+1));
return(i);
}
}

Víctor Cuervo

Katzide

Hey yo se como, trata de implementar el método ya que no corre a la primera:

import java.util.*
public class Aleatorio extends Random {
public int nextInt(int inferior, int superior) {
int i;
i=nextInt();
i=inferior+(Math.abs(i) % (superior-inferior+1));
return(i);
}
}

Víctor Cuervo

Arnaldo Martinez

hola q tal? genial seria seria si me pueden ayudar! mi pregunta es, Como generar numeros aleatorios en un rango (x,y) don x e y son variables, random() genera desde 0 hasta la semilla que le asignemos.

gracias

Víctor Cuervo

anonimo

me sirvio bastante

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*


*