none
Chave Euromilhões

    Question

  • Olá a todos.
    Estou a fazer uma aplicação (VS 2005), para gerar uma chave  para o euromilhões com o seguinte código. Acontece que assim, pôr vezes da-me dois números iguais.
    Qual a maneira de fazer, para não dar números duplicados.
    ____________________________________________________________________________________________________
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Randomize()

            Dim value0 As Integer
            Dim value1 As Integer
            Dim value2 As Integer
            Dim value3 As Integer
            Dim value4 As Integer
            Dim value5 As Integer
            Dim value6 As Integer
            Dim value7 As Integer

            value0 = (50 * Rnd() + 1)
            value1 = (50 * Rnd() + 1)
            value2 = (50 * Rnd() + 1)
            value3 = (50 * Rnd() + 1)
            value4 = (50 * Rnd() + 1)
            value5 = (50 * Rnd() + 1)
            value6 = (9 * Rnd() + 1)
            value7 = (9 * Rnd() + 1)

            TextBox1.Text = value0
            TextBox2.Text = value1
            TextBox3.Text = value2
            TextBox4.Text = value3
            TextBox5.Text = value4
            TextBox6.Text = value5
            TextBox7.Text = value6
            TextBox8.Text = value7

            TextBox7.BackColor = Color.Gold
            TextBox8.BackColor = Color.Gold
        End Sub
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    Obrigado
    Saturday, May 05, 2007 8:08 PM

Answers

  • Carlos,

     

    Tem uma solução que postei no link abaixo:

     

    http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=1445588&SiteID=21

     

     

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx
    Sunday, May 06, 2007 1:24 PM
    Moderator
  • Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
            Dim a As Short
            Dim b As Short
            Dim c As Short
            Dim d As Short
            Dim e As Short
            Do
                Randomize()
                
                
                
                a = (49 * Rnd() + 1)
                b = (49 * Rnd() + 1)
                c = (49 * Rnd() + 1)
                d = (49 * Rnd() + 1)
                e = (49 * Rnd() + 1)
                
                
                
                Text1.Text = CStr(a)
                Text2.Text = CStr(b)
                Text3.Text = CStr(c)
                Text4.Text = CStr(d)
                Text5.Text = CStr(e)
                
                
                '
            Loop Until a <> b And a <> c And a <> d And a <> e And b <> c And b <> d And b <> e And c <> d And c <> e And d <> e
            
            Dim f As Short
            Dim g As Short
            Do
                Randomize()
                f = (8 * Rnd() + 1)
                g = (8 * Rnd() + 1)
                Text6.Text = CStr(f)
                Text7.Text = CStr(g)
                
            Loop Until f <> g
            
        End Sub
    --------------------------------------------------------------------------------------------------------
    Penso que assim já da. Obrigado pela ajuda Francisco
    Monday, May 07, 2007 7:21 AM

All replies

  • Carlos,

     

    Tem uma solução que postei no link abaixo:

     

    http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=1445588&SiteID=21

     

     

    Abraços,
    Francisco
    OK, Computer - http://thespoke.net/blogs/fbcjunior/default.aspx
    Sunday, May 06, 2007 1:24 PM
    Moderator
  • Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
            Dim a As Short
            Dim b As Short
            Dim c As Short
            Dim d As Short
            Dim e As Short
            Do
                Randomize()
                
                
                
                a = (49 * Rnd() + 1)
                b = (49 * Rnd() + 1)
                c = (49 * Rnd() + 1)
                d = (49 * Rnd() + 1)
                e = (49 * Rnd() + 1)
                
                
                
                Text1.Text = CStr(a)
                Text2.Text = CStr(b)
                Text3.Text = CStr(c)
                Text4.Text = CStr(d)
                Text5.Text = CStr(e)
                
                
                '
            Loop Until a <> b And a <> c And a <> d And a <> e And b <> c And b <> d And b <> e And c <> d And c <> e And d <> e
            
            Dim f As Short
            Dim g As Short
            Do
                Randomize()
                f = (8 * Rnd() + 1)
                g = (8 * Rnd() + 1)
                Text6.Text = CStr(f)
                Text7.Text = CStr(g)
                
            Loop Until f <> g
            
        End Sub
    --------------------------------------------------------------------------------------------------------
    Penso que assim já da. Obrigado pela ajuda Francisco
    Monday, May 07, 2007 7:21 AM
  • essa soluçao com o Loop,embora funcione não é verdadeira uma vez que todos os numeros continuam com a mesma probabilidade de sairem apos cada extracção. Na verdade, sempre que sai um numero, a probabilidade dos outros cresce para 1/49 e por ai fora..
    Friday, May 01, 2009 9:43 PM