Vai al contenuto

Math.random() e Math.round()


AR89

Messaggi raccomandati

Sto provando a creare un programma in Java che generi numeri di tipo int compresi fra 1 e 6. Per farlo ho bisogno di usare Math.random() che genera numeri compresi nell'intervallo [0, 1[ (quindi 0 incluso 1 escluso). Per ottenere un numero compreso fra 6 e 1 uso la seguente espressione. Math.random()*5+1. (moltiplicando per 5 ottengo numeri compresi fra 0 e 5, sommando 1 l'intervallo andrà da 1 a 6. Tuttavia ora devo convertire questi numeri di tipo double in numeri di tipo int. Come posso fare?

Questo è il codice del programma, come al solito ci sarà qualche errore grossolano:ghghgh:

	public D6(){
 this.faccia=1;
}/* questo è il metodo costruttore di default che imposta la faccia del dado su 1, l'intero "faccia" l'ho dichiarato precedentemente nella classe*/ 

public int lanciaD6(){
double valore=Math.random()*5+1;
Math.round(valore);
this.faccia=valore;

 return faccia;
}/* questo è il metodo che mi dà problemi, perché non riesco a convertire il double in un intero*/

Edit: Risolto tutto grazie al casting (che il mio maledeetto prof non mi aveva spiegato:mad:)

Ecco come ho modificato :

	public int lanciaD6(){
double valore=Math.random()*5+1;
int c= (int)Math.round(valore);
this.faccia=c;

 return faccia;
}//metodo

Un Tetris in vecchio stile, dedicato alla versione per Mac degli anni 80.

Link al commento
Condividi su altri siti

:love: RA89

il codice che hai scritto va benissimo, ma è meglio conoscere anche altre soluzioni anche solo per conoscenza personale.

ecco una soluzione che avresti potuto implementare

java.util.Random _random = new java.util.Random();
int _numeroRandom = _random.nextInt(6) + 1;

nella variabile _numeroRandom hai un intero compreso tra 1 e 6

ora spiego un pò il codice!!

il metodo "nextInt(int n)" da un numero pseudocasuale intero compreso tra 0 (incluso) e il valore n (escluso) quindi aggiungendo 1 hai un numero casuale compresto tra 1 e 6

ti mando il link della documentazione ufficiale di sun http://java.sun.com/j2se/1.4.2/docs/api/java/util/Random.html#nextInt(int)

fa riferimento alla versione 1.4.2 ma è sicuramente supportata anche dalle versioni successive

Qui il link dell'ultima relase di java

http://java.sun.com/javase/6/docs/api/java/util/Random.html#nextInt(int)

tecnologicamente dipendente

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...