我正在尝试创建一个程序,从列表中随机选择文本框,并在这些文本框中生成1到5的随机数, 但没有成功。我有10个名为Textbox1- Textbox10的文本框,1个名为TxB1的文本框和1个按钮。在TxB1中,用户应指定随机文本框中选择的数量。 例如:用户在TxB1中指定了编号4, 单击了button1,然后1到5中的数字应出现在随机选择的4个不同的文本框中。 这是我试过的代码没有运气......
Dim rn As New Random
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim index2 As Integer = rn.Next(1, TxB1.Text)
Dim MyListOfTextBoxes() As TextBox = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10}
For index = 0 To 9
Dim RandomNumberAHigh As Integer = 10
Dim RandomNumberALow As Integer = 1
Dim Random As Integer = 0
For i As Integer = 0 To index2
MyListOfTextBoxes(index2).Text = Int((RandomNumberAHigh - RandomNumberALow + 1) * Rnd() + RandomNumberALow)
Next
Next
End Sub
答案 0 :(得分:0)
如果你想从列表中做出一些独特的,随机的选择,那么,只要列表不是太大,我建议随机排序列表,然后从那个开始采取适当数量的项目名单。在你的情况下:
Dim rng As New Random
Dim allTextBoxes = {TextBox1, TextBox2, ..., TextBox10}
Dim selectedTextBoxes = allTextBoxes.OrderBy(Function(tb) rng.NextDouble()).
Take(numberOfTextBoxes).
ToArray()
显示每个的随机数只是循环第二个数组并根据同一Text
对象生成的数字设置其Random
。
For Each tb In selectedTextBoxes
tb.Text = rng.Next(1, 6).ToString()
Next
请注意,如果列表只是ToArray
循环的主题,您甚至不需要在第一个代码段中进行For Each
调用。 Take
的结果可以用于此。