VB.NET 生成 1 到 10 之间的唯一 5 个数字

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18293633/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-09 17:05:47  来源:igfitidea点击:

VB.NET Generate unique 5 numbers between 1 and 10

vb.netrandom

提问by OussamaLord

Hello I 5 unique numbers betwen 0 and 10, I'm doing as following :

您好,我有 5 个介于 0 和 10 之间的唯一数字,我正在执行以下操作:

Dim RandomClass As New Random()
Dim RandomNumber As Integer
For counter As Integer = 0 To 5
    RandomNumber = RandomClass.Next(0, 10)
    MsgBox(RandomNumber )
Next

Sometimes it works, I get those numbers : "1,7,4,9,3" but sometimes I get a duplicate numbers like : "5,2,3,2,7"

有时它有效,我得到这些数字:“1,7,4,9,3”但有时我得到重复的数字,如:“5,2,3,2,7”

How can I be sure to have unique numbers each time?

我怎样才能确保每次都有唯一的数字?

Thank you.

谢谢你。

回答by MarcinJuraszek

Use HashSet(Of Integer)to remembernumbers that have already been printed out:

使用HashSet(Of Integer)记住那已经打印出来的数字:

Dim RandomClass As New Random()
Dim RememberSet As New HashSet(Of Integer)

Dim RandomNumber As Integer

While RememberSet.Count < 5
    RandomNumber = RandomClass.Next(0, 10)
    If RememberSet.Add(RandomNumber) Then
        MsgBox(RandomNumber)
    End If
End While

回答by Steve

Just for fun, a different approach, make a list of integers from 0 to 10, use the random generator to get an index inside this list, print that number and remove from the list. Keep the generation of the random numbers inside the limits

只是为了好玩,一种不同的方法,制作一个从 0 到 10 的整数列表,使用随机生成器在这个列表中获取一个索引,打印该数字并从列表中删除。将随机数的生成保持在限制范围内

Dim numbers = Enumerable.Range(0, 11).ToList()
Dim RandomClass As New Random()
Dim RandomIndex As Integer
For counter As Integer = 1 To 5
    RandomIndex = RandomClass.Next(0, numbers.Count)
    MsgBox(numbers(RandomIndex))
    numbers.RemoveAt(RandomIndex)
Next

回答by RossGamble

I would suggest adding a seed so that random numbers are not repeated.

我建议添加一个种子,这样随机数就不会重复。

Dim RandomClass As New Random(DateTime.Now.Ticks)
Dim RememberSet As New HashSet(Of Integer)

Dim RandomNumber As Integer

While RememberSet.Count < 5
    RandomNumber = RandomClass.Next(0, 10)
    If RememberSet.Add(RandomNumber) Then
        MsgBox(RandomNumber)
    End If
End While

回答by Swalla

try following:

尝试以下:

 Sub Main()

    Dim a As String() = New String(2) {}
    Dim b As String
    Dim c As Integer = 0
    Dim d As String = " "
    Do
        Console.Clear()
        Console.Write("Enter your name:")
        a(c) = Console.ReadLine()
        c += 1

    Loop Until c = 3
    For Each d In a
        Console.Write(" " & d)
    Next
    Console.ReadLine()