2017-05-06 74 views
0

我只想製作隨機程序。它將被用來挑選比賽對(如FE歐洲冠軍聯賽quaterfinal對)Visual Basic(.NET)> randomize listbox picks(unique)

GUI畫面:http://i.imgur.com/jqBMJjt.png

我有麻煩與此。當我試圖使選擇器,它工作得很好>從列表框中1 (左側)到列表框2(列表框1項目的50%),列表框3(列表框1項目的50%)..(左側),但這些選擇並不是唯一的。有一些重複,你可以看到圖像(第二列表框2×小白)。

我的代碼部分:

Private Sub RandomiseListBox() 
    Dim count As Integer = CarbonFiberListBox1.Items.Count 
    Dim countt As Integer 
    'countt = count/2 
    Dim item As String 
    Dim itemz As New List(Of String)() 
    Dim repeat As New List(Of String)() 
    Dim aa, bb As Integer 


    If Not count = 0 And ((count Mod 2) = 0) Then 
     CarbonFiberListBox2.Items.Clear() 
     CarbonFiberListBox3.Items.Clear() 

     For index As Integer = 0 To countt - 1 Step 1 
      item = Me.CarbonFiberListBox1.Items(Me.randomiser.Next(index, count)) 
      itemz.Add(item) 
      'Me.CarbonFiberListBox1.Items.Remove(item) 
      'Me.CarbonFiberListBox1.Items.Insert(index, item) 
      Me.CarbonFiberListBox2.Items.Insert(index, item) 
     Next index 

     For index As Integer = 0 To countt - 1 Step 1 
      For aa = 0 To bb = 999 
       item = Me.CarbonFiberListBox1.Items(Me.randomiser.Next(index, count)) 
       If Not (itemz.Contains(item)) And Not (repeat.Contains(item)) Then 
        repeat.Add(item) 
        'Me.CarbonFiberListBox1.Items.Remove(item) 
        'Me.CarbonFiberListBox1.Items.Insert(index, item) 
        Me.CarbonFiberListBox3.Items.Insert(index, item) 
       End If 
      Next 
     Next index 

     'For index As Integer = 0 To countt - 1 Step 1 

     'Next index 
    ElseIf count > 0 Then 
     'CarbonFiberButton4.Text = "ODD PARTICIPANTS!" 
    Else 
    End If 
End Sub 

我能得到幫助?我認爲這很容易。

回答

0

也許這個小例子會給你一個想法。它通過從一個列表框中以隨機順序獲取列表來工作。請注意,由於項目被添加到其他停止重複項目的列表框,所以列表如何被耗盡。

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    'some sample data 
    ListBox1.DataSource = {"one", "two", "three", "four", "five", "six", "seven"} 
    DoRandom() 
End Sub 

Private Shared prng As New Random 
Private Sub DoRandom() 
    ListBox2.Items.Clear() 
    ListBox3.Items.Clear() 
    Dim l As New List(Of String) 
    'random order of items in ListBox1 
    l.AddRange(ListBox1.Items.Cast(Of String).OrderBy(Function(s) prng.Next)) 
    'add half to lb2 
    For x As Integer = 0 To l.Count \ 2 
     ListBox2.Items.Add(l(0)) 
     l.RemoveAt(0) 
    Next 

    'remainder to lb3 
    For x As Integer = 0 To l.Count - 1 
     ListBox3.Items.Add(l(0)) 
     l.RemoveAt(0) 
    Next 
End Sub