避免在组合框中加倍

时间:2010-08-10 08:10:30

标签: vb.net

我有以下代码生成随机数。在1到10之间。这很好。 但是,我不想在组合框中加倍(cmbRnd是我的组合框)。我怎么能避免它?

Private Sub cmdRnd_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdRnd.Click
    Dim random As New Random(), i As Integer = 1
    Do While i < 10
        cmbRnd.Items.Add(random.Next(1, 10))
        i = i + 1
    Loop
End Sub

2 个答案:

答案 0 :(得分:2)

更好的方法是生成一个数字1-10的数组,然后将它们混洗。

最简单的洗牌方法是随机排序:

Dim rng As New Random()
Dim numbers As Integer() = Enumerable.Range(1, 10).OrderBy( _
    Function(x) rng.Next()).ToArray()

接下来,请阅读为何调整此类is a bad idea! and how to do it better之类的数字。

无关的评论:

不要使用While循环来迭代数字。这个特殊用例由For循环更好地映射,查看代码的人会想知道避免For循环的原因。一致性有时候有点愚蠢,但在如此完善的情况下,没有理由偏离规范。

答案 1 :(得分:0)

Dim random As New Random(), i As Integer = 1
Dim cmbRnd As New Windows.Forms.ComboBox
Do While i < 10
    Dim newItem As Int32 = random.Next(1, 10)
    If Not cmbRnd.Items.Contains(newItem) Then
        cmbRnd.Items.Add(newItem)
        i = i + 1
    End If
Loop