Codice delphi per formula calcolo probabilità

di il
4 risposte

Codice delphi per formula calcolo probabilità

Ciao a tutti, premetto che sono un dilettante e che ogni tanto mi diverto a fare qualche programmino di calcolo con Delphi per uso privato; vorrei capire come ottenere lo stesso risultato che si ha con excel usando la forumula DISTRIB.BINOM, dove basta inserire questi 3 dati per calcolare la % che un evento accada.

Gli input sono:
1.Numero di prove
2.Probabiltà dell'evento (numero con almeno 2 decimali)
3.Numero di sortite

Per esempio se in excel uso la formula DISTRIB.BINOM ed inserisco i seguenti valori:

1.Numero di prove = 100
2.Probabiltà dell'evento = 2,7
3.Numero di sortite = 4

Il risultato è 28,56% che significa che la probabilità che un evento con il 2,7% di di successo sortisca 4 volte su 100 prove è del 28,56%.

Ho cercato in rete qualche esempio di codice, ma non ho trovato nulla che si avvicinasse neanche lontanamente in modo da adattarlo eventualmente alle mie necessità...

Un saluto e grazie mille per ogni eventuale aiuto/spunto.
Luigi

4 Risposte

  • Re: Codice delphi per formula calcolo probabilità

    Hai fatto una ricerca con Google?
    Io ad esempio ho trovato questo.

    Ciao!
  • Re: Codice delphi per formula calcolo probabilità

    Grazie mille Alka, ma sembrerebbe un componente aggiuntivo (io uso delphi 6) con molte più funzionalità, speravo di cavarmela con un semplice codice di poche righe... in realtà il problema l'ho già risolto in modo "empirico", cioè facendo fare il calcolo direttamente al programma con questo rudimentale codice da me realizzato tempo fa:

    procedure TMAIN.calcuClick(Sender: TObject);
    var X,FR,T,R,TRANCHE,ALMENO:integer;
    var wn,n:currency;
    begin
    WN:=0;
    N:=ROUND(strtocurr(qm.text)*100); //PROBABILITA' DELL'EVENTO
    TRANCHE:=STRTOINT(tran.text); //LUNGHEZZA DELLA TRANCHE DEL NUMERO DI PROVE
    ALMENO:= STRTOINT(win.text); //NUMERO MINIMO DI SORTITE n
    FOR X:=1 TO strtoint(trials.text) DO BEGIN /NUMERO DI PROVE TOTALI DA FARE
    FR:=0;
    FOR T:=1 TO TRANCHE DO BEGIN
    R:=RANDOM(10000)+1;
    IF R<=(N) THEN FR:=FR+1;
    end;
    IF FR>= ALMENO THEN WN:=WN+1;
    END;
    PROA.CAPTION:=CURRTOSTR((WN/(STRTOCURR(TRIALS.Text)/100)))+'%'; //RESTITUISCE LA % DI VOLTE IN CUI CI SONO STATE "ALMENO" n SORTITE
    END;

    Questo codice restituisce esattamente gli stessi risultasti della formula excel del post di prima, il problema è che il pc deve fare 1000000 simulazioni o anche molte più per confermare il risultato di excel, con considerevoli ed inutili rallentamenti; se riuscissi ad implementare direttamente la formula di calcolo matematico sarebbe molto più rapido!
  • Re: Codice delphi per formula calcolo probabilità

    Keylock ha scritto:


    speravo di cavarmela con un semplice codice di poche righe...
    Se non è possibile trovarlo già codificato, cerca la formula e implementala in Delphi come descritto.
    Ad esempio, prova a guardare questo articolo che sembra esaustivo.
  • Re: Codice delphi per formula calcolo probabilità

    Grazie, nell'articolo la formula mi sembra questa, il problema è che non ho idea di come implementarla in Delphi

    The binomial distribution formula is:

    b(x; n, P) = nCx * Px * (1 – P)n – x

    Where:
    b = binomial probability
    x = total number of “successes” (pass or fail, heads or tails etc.)
    P = probability of a success on an individual trial
    n = number of trials
Devi accedere o registrarti per scrivere nel forum
4 risposte