Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Istogrammi in python
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
mdweb
Dio maturo
Dio maturo


Registrato: 18/12/07 16:59
Messaggi: 4412

MessaggioInviato: 02 Feb 2009 20:06    Oggetto: Istogrammi in python Rispondi

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.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi