Visual Basic - 使用数组和 For 循环的随机数生成器

Visual Basic - Random Number Generator using Array and For Loop

我需要帮助在 VB.NET 中创建基本数组。

objective就是在数组的每个位置加载一个随机数,然后显示数组的内容。从1到100共有100个索引值

这是我目前的情况:

    Dim Output As String
    Dim RandomNumber As Integer
    Dim n As Integer
    Dim NumberArray(101) As Integer

    NumberArray(n) = RandomNumber

    For n = 1 To 100
        Randomize()
        RandomNumber = Int(Rnd() * 100) + 1
    Next

    Output = Output & "Index #" & n & vbTab & NumberArray(n) & vbCrLf

    TextBox1.Text = Output

我收到的输出是:

索引 #101 0

我不知道如何输出整个数组列表。

你的循环所做的就是生成随机数,并将它们分配给一个变量,然后在下一次迭代中被覆盖。您需要将数组分配和输出字符串连接移动到循环内部。

Dim Output As String = ""
Dim RandomNumber As Integer
Dim n As Integer
Dim NumberArray(101) As Integer

For n = 1 To 100
    Randomize()
    RandomNumber = Int(Rnd() * 100) + 1

    NumberArray(n) = RandomNumber
    Output &= "Index #" & n.ToString & vbTab & NumberArray(n).ToString & vbCrLf
Next

TextBox1.Text = Output

请注意,上面的代码不是'ideal.'我特意这样写的,为了清楚起见,尽可能多地保留提问者的原始代码。

我建议使用 RANDOM 试试这个:

Option Strict On
Option Explicit On
Option Infer Off
Public Class Form1
    Dim random As New Random(Now.Millisecond)
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim array() As Integer = {}

        For I As Integer = 1 To 100
            ReDim Preserve array(I - 1)
            array(I - 1) = random.Next(0, 101)
        Next
        MsgBox(arrToStr(array))
    End Sub
    Function arrToStr(arr As Integer()) As String
        Dim sb As New System.Text.StringBuilder
        For i As Integer = 0 To UBound(arr)
            If i = UBound(arr) Then
                sb.Append(arr(i).ToString)
            Else
                sb.Append(arr(i).ToString & ", ")
            End If
        Next
        Return sb.ToString
    End Function
End Class

你的风格:

Randomize()
Dim Output As String = String.Empty
Dim NumberArray(99) As Integer
For n As Integer = 0 To 99
    Dim RandomNumber As Integer = CInt(Int(Rnd() * 100) + 1)
    NumberArray(n) = RandomNumber
    Output &= "Index #" & n.ToString & Space(4) & NumberArray(n) & vbCrLf
Next
TextBox1.Text = Output

您可以减少代码,如下所示:

Dim Output As String =""
Dim i As Integer
Randomize(Timer.Now)
For i = 1 To 100
    Output = Output & i & vbTab & (Rnd() * 99) + 1 & vbCrLf
Next
TextBox1.Text = Output

随机数将不可靠,因为默认的 rn 生成器在周期性方面不是很好。