Danilo Poccia - Tecnologia et al.
Calcolare Pi greco con la funzione Random
Calcolare Pi greco "a caso", utilizzando la funzione Random messa a disposizione dai vari linguaggi di programmazione, è una procedura divertente (fin quasi irriverente), anche se è in effetti un algoritmo poco utile, se non per consumare cicli di clock di una CPU (e di fatti ne faremo uso in seguito per testare le modalità di allocazione delle risorse di Solaris 10).
L'algoritmo è basato su un concetto molto semplice: immaginiamo di avere un quadrato con un cerchio inscritto. Scegliendo n punti a caso nel quadrato e contando i c punti che si trovano dentro il cerchio, il valore di c/n tenderà ad approssimarsi, al crescere di n, al rapporto tra l'area del cerchio e quella del quadrato (Pi/4).
Solitamente l'implementazione dell'algoritmo è (per semplicità) realizzata con un quarto di cerchio inscritto in un quadrato. Anche in questo caso si ha che il rapporto c/n tende a Pi/4, per cui 4c/n tende a Pi.
Ecco un paio di semplici implementazioni (in cui il lato del quadrato, e di conseguenza il raggio del cerchio, è fissato ad 1):
-
in Java (RandomPI.java)
-
in Perl (RandomPI.pl)
Per motivi di performance entrambi i programmi effettuano la stampa a video dell'approssimazione di Pi raggiunta solo una volta ogni 1.000.000 di tentativi (ma non è difficile cambiare tale valore nei sorgenti). E' facile verificare che su tali volumi si aggiungono, alla lentezza della convergenza dell'algoritmo, i limiti dei generatori di numeri casuali.
Posted at 10:10AM mar 07, 2006 by danilop in Personal | Comments[0]


