我必须编写一个循环来产生4个唯一数字。所以它就像4-2 - 5 - 7并且它不能像4 - 4 - 5- 7那样因为4并不是唯一的。我只是在努力学习循环我尝试在YouTube上学习循环但不知道如果我看到有人在这个概念中做到这一点我会得到如果
答案 0 :(得分:2)
如果不采用循环,这是一种非常简单的方法。
试试这段代码:
Dim rnd As System.Random = New System.Random()
Dim numbers As Integer() = _
Enumerable.Range(1, 10).OrderBy(Function (n) rnd.Next()).Take(4).ToArray()
我用这段代码得到了这样的结果:
8,3,2,6
您可以更改.Range(1, 10)
以选择您喜欢的任何数字范围,.Take(4)
只能选择任意数量的数字。
如果您想通过循环执行此操作,那么这是一种相当有效的方法:
Dim rnd As System.Random = New System.Random()
Dim pallet As New List(Of Integer)
For i = 1 To 10
pallet.Add(i)
Next
Dim selected = New List(Of Integer)()
For i = 0 To 3
Dim j = rnd.Next(0, pallet.Count)
selected.Add(pallet(j))
pallet.RemoveAt(j)
Next
答案 1 :(得分:1)
我只能假设您需要4个唯一的随机数字。假设这是假设,我们首先需要一种方法来生成随机数(从https://stackoverflow.com/a/2677819/3579199借来):
Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer
Static Generator As System.Random = New System.Random()
Return Generator.Next(Min, Max)
End Function
此方法将返回一个> = Min和<的随机数。最大。我们现在可以使用此方法在循环中生成4个唯一的随机数。对于以下示例,我假设您需要1到99之间的4个数字,包括:
Dim count = 0
Dim numbers(3) As Integer
Do
Dim randomNumber = GetRandom(1, 100)
If(Array.Exists(numbers, Function(element)
Return element.Equals(randomNumber)
End Function))
Continue Do
End If
numbers(count) = randomNumber
count += 1
Loop Until count = 4