我有以下代码生成随机数。在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
答案 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