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 生成器在周期性方面不是很好。
我需要帮助在 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 生成器在周期性方面不是很好。