生成随机文本框以显示随机数

时间:2017-04-21 21:56:34

标签: vb.net random textbox

我正在尝试创建一个程序,从列表中随机选择文本框,并在这些文本框中生成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

1 个答案:

答案 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的结果可以用于此。