Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB.NET: Loton todennäköisyydet

tnb [03.03.2004 23:40:26]

#

Suomalaisen Loton 7/39 todennäköisyydet.

Tulostaa tämän:
Loton 7/39 voittotodennäköisyydet
0.........2,19E-01
1.........4,12E-01
2.........2,75E-01
3.........8,18E-02
4.........1,13E-02
5.........6,77E-04
6.........1,32E-05
6 + 1.....1,37E-06
7.........6,50E-08

Form 1 = button1 + textbox1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'Suomalaisen Loton todennäköisyydet
    ' Tulokset voi tarkistaa: http://www.veikkaus.fi/lotto/todennakoisyys.html
    Dim N As Integer = 39
    Dim K As Integer = 7
    Dim L As Integer = 3 ' lisänumeroita
    Dim i As Integer
    Dim TodNäk() As Double = Lotto(N, K, L)
    TextBox1.Text = "Loton 7/39 voittotodennäköisyydet" & vbNewLine
    For i = 0 To K
        If i = K Then TextBox1.AppendText("6 + 1" & vbTab & Format(CStr(TodNäk(K + 1)), "Scientific") & vbNewLine)
        TextBox1.AppendText(i & vbTab & Format(CStr(TodNäk(i)), "Scientific") & vbNewLine)
    Next

End Sub


'********************************
'Funktio: Lottotodennäköisyydet
'********************************
Public Shared Function Lotto(ByVal N As Integer, ByVal K As Integer, ByVal L As Integer) As Double() ' N= 39, K=7, L=3
    Dim voitto As Integer
    Dim YhdenRivinTodennäköisyys As Double
    Dim VoittaviaYhdistelmiä As Double
    Dim HäviäviäYhdistelmiä As Double
    Dim LisänumeroYhdistelmiä As Double
    Dim TodNäk(K + 1) As Double
    Dim sum As Double
    YhdenRivinTodennäköisyys = 1 / Kombinaatio(N, K)
    For voitto = K To 0 Step -1
        VoittaviaYhdistelmiä = Kombinaatio(K, voitto)
        HäviäviäYhdistelmiä = Kombinaatio(N - K, K - voitto)
        If voitto = 6 Then
            '6 + 1
            LisänumeroYhdistelmiä = VoittaviaYhdistelmiä * Kombinaatio(3, K - voitto)
            TodNäk(K + 1) = YhdenRivinTodennäköisyys * LisänumeroYhdistelmiä
        Else
            LisänumeroYhdistelmiä = 0
        End If
        TodNäk(voitto) = YhdenRivinTodennäköisyys * (VoittaviaYhdistelmiä * HäviäviäYhdistelmiä - LisänumeroYhdistelmiä)
        sum = sum + TodNäk(voitto)
    Next
    sum = sum + TodNäk(K + 1) 'tarkistussumma = 1.0
    Return TodNäk
End Function


'**********************
' Funktio: Kombinaatio
'**********************
Public Shared Function Kombinaatio(ByVal JoukonKoko As Long, ByVal OtosKoko As Long) As Long
    '"Kuinka monella tavalla Joukosta voi valita Otoskoon mukaisen määrän,
    'kun otoksen erilaiset keskinäiset järjestykset eivät tee uusia yhdistelmiä.
    'Ei takaisinpanoa."
    Dim i As Long
    Dim n As Long = 1
    Dim m As Long = Permutaatio(JoukonKoko, OtosKoko)
    For i = 1 To OtosKoko
        n = n * i
    Next
    Return m \ n
End Function


'********************
'Funktio: Permutaatio
'********************
Public Shared Function Permutaatio(ByVal JoukonKoko As Long, ByVal OtosKoko As Long) As Long
    '"Kuinka monella tavalla Joukosta voidaan valita otoskoon mukainen määrä,
    'kun ei tehdä takaisinpanoa ja
    'otoksen keskinäinen järjestys tekee uusia yhdistelmiä"
    Dim i As Long
    Dim n As Long = 1
    For i = JoukonKoko To JoukonKoko - OtosKoko + 1 Step -1
        n = n * i
    Next
    Return n
End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    TextBox1.Multiline = True
    TextBox1.ScrollBars = ScrollBars.Vertical
    TextBox1.Height = 200
    TextBox1.Width = 300
End Sub

efteri [06.03.2004 13:11:15]

#

Hmm,hyvä tämä tulee tarpeseen jos oisi vain pekkä visualbacik

sooda [07.03.2004 11:53:11]

#

samoin

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta