我该如何创建这个程序?

时间:2016-01-25 02:24:59

标签: vb.net visual-studio-2010 basic

我必须编写一个循环来产生4个唯一数字。所以它就像4-2 - 5 - 7并且它不能像4 - 4 - 5- 7那样因为4并不是唯一的。我只是在努力学习循环我尝试在YouTube上学习循环但不知道如果我看到有人在这个概念中做到这一点我会得到如果

2 个答案:

答案 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