mdweb Dio maturo


Registrato: 18/12/07 16:59 Messaggi: 4412
|
Inviato: 02 Feb 2009 20:06 Oggetto: Istogrammi in python |
|
|
Ciao a tutti,oggi ho deciso di riprendere con la programmazione così stavo guardando qualche vecchio codice.
Non ho potuto fare a meno di notare questo:
Codice: | import random
def lista_casuale(l):
lista = [0] * l # crea una lista di "l" elementi piena di zeri
for i in range(l): # qui ciclo per "l" volte coì posso scrivere su tutti gli elementi della lista appena creata
lista[i] = random.random() # genero un numero casuale e lo metto nella lista
return lista # ritorno la lista a chi mi a chiamato
def dividi_in_barre(lista, n):
barre = [0] * n # crea una lista di "n" elementi che rappresentano le barre dell'istogramma
for x in lista: # ciclo per tutti numeri casuali presenti nella lista
barre[int(x * n)] += 1 # calcolo che indice ha la barra che contiene il numero casuale x e poi incremento di uno il valore della barra
return barre # ritorna la lista delle barre
def istogramma(lista, n):
barre = dividi_in_barre(lista, n) # divide la lista di numeri random in "n" barre dell'istogramma
for barra in barre: # ciclo per ogni barra presente nell'istogramma
print barra, "x" * barra # stampa il numero di elementi e poi una "x" ripetuta tante volte quanti sono i numeri di elementi presenti in quella barra
lista = lista_casuale(100)
istogramma(lista, 10) |
Questo programma con la funzione istogramma prende una lista ed il numero di intervalli da considerare e ritorna l'istogramma della distribuzione dei valori per ciascun intervallo.
La cosa non è affatto facile sopratutto se si ha carenze in matematica.Io stesso ammetto di non essere riusciuto a fare l'esercizio,se non con l'aiuto di esperti.(che ringrazio).
La prima cosa che bisogna sapere è cos'è l'intervallo?
(Da Wikipedia)
Citazione: | In matematica, un intervallo è un sottoinsieme dei numeri reali formato da tutti i punti della retta reale che sono compresi tra due estremi a e b. Gli estremi possono (ma non devono necessariamente) appartenere all'intervallo e possono essere infiniti. |
Quindi se abbiamo a=1 e b=6,l'insieme de numeri compresi fra questi due si chima intervallo.
Nel nostro caso dobbiamo rivolgere particolare attenzione qui:
Codice: |
def dividi_in_barre(lista, n):
barre = [0] * n # crea una lista di "n" elementi che rappresentano le barre dell'istogramma
for x in lista: # ciclo per tutti numeri casuali presenti nella lista
barre[int(x * n)] += 1 # calcolo che indice ha la barra che contiene il numero casuale x e poi incremento di uno il valore della barra
return barre # ritorna la lista delle barre |
Infatti se moltiplichiamo un numero nella gamma da 0.0 a 1.0 per il numero delgli intervalli otteniamo un numero compreso tra n.
Con int() arrotondiamo per difetto e quindi abbiamo l'indice dell'intervallo dove cade il valore. |
|