Sei sulla pagina 1di 7

Lezione 01.10.

2021

La classe mth di java è un esempio


di classe di utilita che ci viene
fornita da Java. Abbiamo gi
autilizzato diversi metodi di questa
classe, come math.sqrt, math.abs,
etc. C’è però una funzione che non
abbiamo ancora utilizzato ed è la
funzione Math.random: genera in
modo randomico dei double, più
precisamente in modo
pseudorandomico perché prima o
poi i numeri si ripetono. Ogni volta
che genera un numero, viene
generato nell’intervallo [0,1).
Volendo una distribuzione
uniforma di numeri tra MIN e MAX
è sufficiente: Math.random*(MAX-
MIN)+MIN.
Math.random() è chiamato
GENERATORE DI BASE, ma noi
possiamo generare dei numeri
casuali tra un massimo e un
minimo che scegliamo noi.
Approssimazione del valore π
mediante tecnica Monte Carlo

L’idea è di fare un certo numero di


esperimenti casuali (“colpi”
random) con riferimento alla
figura che segue:

E contare quante volte un “colpo”


ricade all’interno della
circonferenza, rispetto al numero
totale di colpi.
Evidentemente, il quadrato ha lato
2 e quindi area 4. La circonferenza
inscritta ha raggio 1 e quindi area
π. Il rapporto tar le due aree è π\4.
Se N è il numero totale di colpi
random generati, ed M sono i
colpi che ricadono nel cerchio, è
lecito supporre che il rapporto M\
N è un’approssimazione del
rapporto delle aree. Questa
approssimazione è migliore
quanto più N è grande.
Questo algoritmo si può costruire
con Math.random().

Classe Scanner
La classe Scanner rappresenta la
soluzione più semplice per
realizzare in Java un input da uno
stream di caratteri. La classe
Scanner appartiene al package
java.util e i suoi oggetti sono in
grado di individuare e interpretare
i tipi primitivi e le stringhe presenti
all’interno di uno stream di
caratteri.
import java.util.*; //package che
esporta la classe Scanner
Scanner s=new Scanner( System.in
); //per leggere da tastiera Metodi
disponibili:
s.nextLine() -- legge e ritorna
un’intera linea (String) chiusa da
INVIO
s.nextQ -- legge e ritorna, se
esiste, la prossima parola
(terminata da spazio o fine linea)
s.nextlnt() -- legge e ritorna, se
esiste, il prossimo int
s.nextDouble() -- usa la tua
fantasia
s.hasNext() -- ritorna true se esiste
una prossima parola

Potrebbero piacerti anche