Formas de generar un número aleatorio en un rango con Java
Escrito por
el .
java
planeta-codigo
Enlace permanente
Comentarios
En Java hay varias formas de generar números aleatorios, la clase Random permite generar números aleatorios individuales y desde Java 8 con la adición de streams permite obtener una secuencia de números aleatorios de tamaño determinado o indefinido. La clase Math también permite generar números aleatorios aunque es más recomendable usar la clase Random. Finalmente, en caso de querer un identificativo único universal está la clase UUID que genera números aleatorios de 128 bits que se representan mediante caracteres alfanuméricos.
Las computadoras hacen el mejor esfuerzo para ser capaces de generar números aleatorios, para ello hacen uso de la entropía de que disponen para obtener aleatoriedad como datos de entrada que recibe por dispositivos de teclado, ratón o red. Generar números aleatorios es útil en ciertas funcionalidades de programación como la criptografía pero también útil en tareas más sencillas como seleccionar un elemento de un array de forma aleatoria u obtener un número aleatorio entre dos cifras.
Todos los lenguajes de programación ofrecen funciones de soporte para generar números aleatorios, el lenguaje Java también puede hacerse de varias formas.
Contenido del artículo
Generar números aleatorios en un rango
Java ofrece varias clases y formas para generar números aleatorios, dependiendo de cada una la forma de generar un número aleatorio u obtener un número aleatorio en un rango varía ligeramente.
Con la clase Random
La clase Random permite generar números aleatorios con varios métodos según el tipo de datos deseado, en el caso de querer números enteros del tipo int con el método nextInt que devuelve números enteros uniformemente distribuidos entre 0 de forma inclusiva y el límite superior indicado de forma exclusiva.
Dada la especificación del método nextInt si se desea un número aleatorio entre un rango distinto que no empiece en el 0 hay que realizar una pequeña operación matemática.
|
|
|
|
|
|
Usando un stream
En el caso de desear una secuencia de números aleatorios la clase Random ofrece soporte para obtener un stream en Java 8 de enteros que son números aleatorios.
|
|
|
|
|
|
Con la clase Math
Es más eficiente usar la clase Random pero otra forma posible de generar números aleatorios es con la clase Math. El método random de Math devuelve números aleatorios del tipo double entre 0 de forma inclusiva y 1 de forma exclusiva. Para obtener el número aleatorio hay que hacer una multiplicación y conversión a entero.
|
|
|
|
|
|
Generar un identificativo único universal
Si se desea generar un identificador único universal para una entidad en vez de un número aleatorio en un rango que tiene posibilidades de repetirse está la clase UUID que genera número únicos de 128 bits que se presentan con caracteres alfanuméricos.
|
|
|
|
|
|
El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando siguiente comando:./gradlew run