Tirar un dado de seis lados

Para demostrar los números aleatorios, desarrollaremos un programa que simula 20 tiros de un dado de seis lados, 
y que muestra el valor de cada tiro. Para empezar, usaremos 

nextInt

 para producir valores aleatorios en el rango 

de 0 a 5, como se muestra a continuación:

 

cara = numerosAleatorios.nextInt( 

6

 );

El argumento 6 (que se conoce como el 

factor de escala

) representa el número de valores únicos que 

nextInt

 

debe producir (en este caso, seis: 0, 1, 2, 3, 4 y 5). A esta manipulación se le conoce como 

escalar

 el rango de 

valores producidos por el método 

nextInt

 de 

Random

 

Un dado de seis lados tiene los números del 1 al 6 en sus caras, no del 0 al 5. Por lo tanto, 

desplazamos

 el 

rango de números producidos sumando un 

valor de desplazamiento

 (en este caso, 1) a nuestro resultado ante-

rior, como en

 cara 

1

 + numerosAleatorios.nextInt( 

6

 );

El valor de desplazamiento (

1

) especifi ca el primer valor en el conjunto deseado de enteros aleatorios. La instruc-

ción anterior asigna a 

cara

 un entero aleatorio en el rango de 1 a 6.

 La 

fi gura 6.7 muestra dos resultados de ejemplo, los cuales confi rman que los resultados del cálculo anterior 

son enteros en el rango de 1 a 6, y que cada ejecución del programa puede producir una secuencia distinta de 
números aleatorios. La línea 3 importa la clase 

Random

 del paquete 

java.util

. La línea 9 crea el objeto 

nume-

rosAleatorios

 de la clase 

Random

 para producir valores aleatorios. La línea 16 se ejecuta 20 veces en un ciclo 

para tirar el dado. La instrucción 

if

 (líneas 21 y 22) en el ciclo empieza una nueva línea de salida después de cada 

cinco números.

 1 

// Fig. 6.7: EnterosAleatorios.java

 2 

// Enteros aleatorios desplazados y escalados.

 3 

import

 java.util.Random; 

// el programa usa la clase Random

 4 

 

 5 

public class

 EnterosAleatorios 

 6 

{

 7  

public static void

 main( String args[] )

 8  

{

 9   

Random numerosAleatorios = 

new

 Random(); 

// generador de números aleatorios

 10  

 

int

 cara; 

// almacena cada entero aleatorio generado

 11
 12  

 

// itera 20 veces

 13  

 

for

 ( 

int

 contador = 

1

; contador <= 

20

; contador++ ) 

 14  

 

{

 

15    

// elige entero aleatorio del 1 al 6

 

16    

cara = 

1

 + numerosAleatorios.nextInt( 

6

 );

 17  
 

18    

System.out.printf(

"%d  "

, cara ); 

// muestra el valor generado

 19
 

20    

// si contador es divisible entre 5, empieza una nueva línea de salida

 

21    

if

 ( contador % 

5

 == 

0

 )

 

22     

System.out.println();

 23  

 

}

// fin de for

 24  

}

// fin de main

 25 

}

// fin de la clase EnterosAleatorios

Figura 6.7

  |  Enteros aleatorios desplazados y escalados. (Parte 1 de 2).

1  5  3  6  2
5  2  6  5  2
4  4  4  2  6
3  1  6  2  2

6.9 Ejemplo práctico: generación de números aleatorios 

225

06_MAQ_CAP_06.indd225

4/19/081:22:16AM