Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Distribuzioni_Statistica - frmMain.frm

frmMain.frm

Caricato da:
Scarica il programma completo

  1. Option Explicit
  2. Dim n As Integer
  3. Dim p As Double
  4. Dim q As Double 'probabilità di fallimento
  5. Dim yMax As Double
  6. Dim xMax As Double
  7. Dim yMin As Double
  8. Dim xMin As Double
  9. Dim bernoul As Boolean
  10. Dim pois As Boolean
  11. Dim gaus As Boolean
  12. Dim scrittaP(0 To 1000) As String
  13. Dim scrittaB(0 To 1000) As String
  14. Dim scrittaG(0 To 1000) As String
  15. Dim vdis(0 To 1000) As Double 'vettore distribuzione usata
  16. 'Disegna gli assi cartesiani
  17. Private Sub cmdAssi_Click()
  18.     xMax = Val(txtProve.Text) + 1.6
  19.     'imposta la scala tenendo conto del numero di prove
  20.     grafico.Scale (xMin, yMax)-(xMax, yMin)
  21.     'asse x
  22.     grafico.Line (xMin, 0)-(xMax, 0)
  23.     'asse y
  24.     grafico.Line (0, yMax)-(0, (yMin - 0.05))
  25. End Sub
  26. 'Operazioni con Gauss
  27. Private Sub CmdGauss_Click()
  28.     Dim i As Double
  29.     n = Val(txtProve.Text)
  30.     p = Val(txtP.Text)
  31.     If (n = Null Or n < 1 Or n > 1000 Or p < 0 Or p > 1 Or p = Null) Then
  32.         MsgBox "Errore nell'inserimento dei dati...prego controllare!", vbCritical, "ERRORE"
  33.     Else
  34.         Dim var As Double
  35.         Dim mu As Double
  36.         Dim pgreco As Double
  37.         Dim gaussiana As Double
  38.         Dim gaussy As Double
  39.         pgreco = 3.14
  40.         mu = n * p
  41.         var = n * p * (1 - p)
  42.         lblRis.Caption = "Risultato Gauss :"
  43.         lstRis.Clear
  44.         frmTabella.lstGauss.Clear
  45.         'curva di gauss
  46.         For i = -0.6 To n + 1.6 Step 0.005
  47.             gaussiana = (1 / (Sqr(var * 2 * pgreco))) * (Exp(-((i - mu) ^ 2) / (2 * var)))
  48.             grafico.PSet (i, gaussiana), vbGreen
  49.         Next i
  50.         'risultati
  51.         For i = 0 To n
  52.             gaussy = (1 / (Sqr(var * 2 * pgreco))) * (Exp(-((i - mu) ^ 2) / (2 * var)))
  53.             scrittaG(i) = "P(" & i & ")=" & gaussy
  54.             lstRis.AddItem scrittaG(i)
  55.         Next i
  56.         gaus = True
  57.     End If
  58. End Sub
  59. 'Operazioni con Poisson
  60. Private Sub CmdPoisson_Click()
  61.     Dim i As Integer 'variabile contatore
  62.     n = Val(txtProve.Text)
  63.     p = Val(txtP.Text)
  64.     If (n = Null Or n < 1 Or n > 1000 Or p < 0 Or p > 1 Or p = Null) Then
  65.         MsgBox "Errore nell'inserimento dei dati...prego controllare!", vbCritical, "ERRORE"
  66.     Else
  67.         For i = 0 To n
  68.             vdis(i) = Poisson(i)
  69.         Next i
  70.         For i = 0 To n
  71.             'sinistro
  72.             grafico.Line (i - 0.5, 0)-(i - 0.5, vdis(i)), QBColor(6)
  73.             'destro
  74.             grafico.Line (i + 0.5, 0)-(i + 0.5, vdis(i)), QBColor(6)
  75.             'tetto
  76.             grafico.Line (i - 0.5, vdis(i))-(i + 0.5, vdis(i)), QBColor(6)
  77.         Next i
  78.         lblRis.Caption = "Risultato Poisson :"
  79.         lstRis.Clear
  80.         frmTabella.lstPoisson.Clear
  81.         For i = 0 To n
  82.             scrittaP(i) = "P(" & i & ")=" & vdis(i)
  83.             lstRis.AddItem scrittaP(i)
  84.         Next i
  85.         pois = True
  86.     End If
  87. End Sub
  88. 'Formula di Poisson
  89. Private Function Poisson(ByVal x As Integer) As Double
  90.     Dim div As Double
  91.     Dim i As Double
  92.     div = 1
  93.     If x > 0 Then
  94.         For i = 0 To x - 1
  95.             div = div * (n * p) / (x - i)
  96.         Next i
  97.     End If
  98.     Poisson = div * Exp(-(n * p)) 'probabilità di Poisson
  99. End Function
  100. 'pulisce le textBox, la listBox e il grafico
  101. Private Sub cmdPulisci_Click()
  102.     grafico.Cls
  103.     txtP.Text = ""
  104.     txtProve.Text = ""
  105.     lstRis.Clear
  106.     lblRis.Caption = "Risultato :"
  107.     frmTabella.lstBernoulli.Clear
  108.     frmTabella.lstPoisson.Clear
  109.     frmTabella.lstGauss.Clear
  110.     bernoul = False
  111.     pois = False
  112.     gaus = False
  113. End Sub
  114. 'si occupa di far visualizzare la tabella
  115. Private Sub CmdTabella_Click()
  116.     Dim i As Integer
  117.     frmTabella.Show
  118.     frmMain.Visible = False
  119.     'poisson
  120.     If pois = True Then
  121.         For i = 0 To n
  122.             frmTabella.lstPoisson.AddItem scrittaP(i)
  123.         Next i
  124.     End If
  125.     'bernoulli
  126.     If bernoul = True Then
  127.         For i = 0 To n
  128.             frmTabella.lstBernoulli.AddItem scrittaB(i)
  129.         Next i
  130.     End If
  131.     'gaus
  132.     If gaus = True Then
  133.         For i = 0 To n
  134.             frmTabella.lstGauss.AddItem scrittaG(i)
  135.         Next i
  136.     End If
  137. End Sub
  138. 'gestisce l'entrata
  139. Private Sub Form_Load()
  140.     n = 10
  141.     p = 0.5
  142.     yMax = 1
  143.     xMin = -0.6
  144.     yMin = -0.05
  145.     lblRis.Caption = "Risultato :"
  146.     bernoul = False
  147.     pois = False
  148.     gaus = False
  149. End Sub
  150. 'Calcola il fattoriale
  151. Public Function Fattoriale(num As Double) As Double
  152.     Dim F As Double
  153.     F = 1
  154.     Do While num > 0
  155.         F = F * num
  156.         num = num - 1
  157.     Loop
  158.     Fattoriale = F
  159. End Function
  160. 'Formula di Bernoulli
  161. Private Function bernoulli(ByVal x, ByVal probability) As Double
  162.     Dim combinazioni As Double
  163.     Dim t As Double 'variabile contatore
  164.     combinazioni = 1 'inizializzo le combinazioni a 1
  165.     q = 1 - p 'probabilità di fallimento
  166.     probability = probability ^ x
  167.     q = q ^ (n - x)
  168.     For t = 0 To x - 1
  169.         combinazioni = combinazioni * ((n - t) / (x - t))
  170.     Next t
  171.     bernoulli = combinazioni * probability * q 'probabilità di Bernoulli
  172. End Function
  173. 'Operazioni con Bernoulli
  174. Private Sub cmdBernoulli_Click()
  175.     Dim i As Integer 'variabile contatore
  176.     n = Val(txtProve.Text)
  177.     p = Val(txtP.Text)
  178.     If (n = Null Or n < 1 Or n > 1000 Or p < 0 Or p > 1 Or p = Null) Then
  179.         MsgBox "Errore nell'inserimento dei dati...prego controllare!", vbCritical, "ERRORE"
  180.     Else
  181.         For i = 0 To n
  182.             vdis(i) = bernoulli(i, p)
  183.         Next i
  184.         For i = 0 To n
  185.             'sinistro
  186.             grafico.Line (i - 0.5, 0)-(i - 0.5, vdis(i)), QBColor(4)
  187.             'destro
  188.             grafico.Line (i + 0.5, 0)-(i + 0.5, vdis(i)), QBColor(4)
  189.             'tetto
  190.             grafico.Line (i - 0.5, vdis(i))-(i + 0.5, vdis(i)), QBColor(4)
  191.         Next i
  192.         lblRis.Caption = "Risultato Bernoulli :"
  193.         lstRis.Clear
  194.         frmTabella.lstBernoulli.Clear
  195.         For i = 0 To n
  196.             scrittaB(i) = "P(" & i & ")=" & vdis(i)
  197.             lstRis.AddItem scrittaB(i)
  198.         Next i
  199.         bernoul = True
  200.     End If
  201. End Sub