2017-05-06 7 views
0

ただランダム化プログラムを作成したいです。 (FE UEFAチャンピオンズリーグquaterfinalペアなど)トーナメントペアVisual Basic(.NET)>ランダム化リストボックスの選択(ユニーク)

GUI画面を選択するために使用されます。私はピッカーを作ってみました、それがうまく機能するとhttp://i.imgur.com/jqBMJjt.png

私はこれでトラブル..を持っている>リストボックス1から(左側)からlistbox2(listbox1項目の50%)、listbox3(listbox1項目の50%)..(左側)が選択されていますが、これらの項目は一意ではありません。あなたが画像で見ることができるようにいくつかの重複があります(2番目のリストボックス2x noob)。私のコードの

パート:

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

多分この小さな例があなたにアイデアを与えるでしょう。 1つのリストボックスからランダムな順序でリストを取得します。重複を停止する他のリストボックスにアイテムが追加されると、リストがどのくらい消耗しているかに注意してください。

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 
関連する問題