Arrays 不重复的随机vb.Net

Arrays 不重复的随机vb.Net,arrays,vb.net,random,static,Arrays,Vb.net,Random,Static,我正在尝试制作一个小测验程序,从20个问题中随机抽取5个随机问题,而不重复其中任何一个 我搜索并发现我需要使用“Static”,但它不起作用 我还尝试了System.Random() 但它总是重复同样的问题 我还需要一个关于表单加载的初始问题,以及当单击提交按钮时的其他问题,以便它们不能重叠 有什么帮助吗?您需要的不是随机数,而是一系列随机排列的数字 假设您的问题只是存储在一个字符串数组中,您可以使用LINQ的OrderBy对数字1-20进行随机排序,然后在使用LINQ的Take对顺序进行随机排

我正在尝试制作一个小测验程序,从20个问题中随机抽取5个随机问题,而不重复其中任何一个 我搜索并发现我需要使用“Static”,但它不起作用 我还尝试了System.Random() 但它总是重复同样的问题 我还需要一个关于表单加载的初始问题,以及当单击提交按钮时的其他问题,以便它们不能重叠
有什么帮助吗?

您需要的不是随机数,而是一系列随机排列的数字

假设您的问题只是存储在一个字符串数组中,您可以使用LINQ的OrderBy对数字1-20进行随机排序,然后在使用LINQ的Take对顺序进行随机排序后获得前5个数字

看看这个例子:

Dim indices() As Integer = Enumerable.Range(0, questions.Length - 1).OrderBy(Function(i) r.Next()).Take(5).ToArray()

小提琴:

这是我的尝试,以避免重复,但它没有工作 这段代码应该从“pick”列表中选择一个随机值,然后从列表中删除该值

Dim ind As New List(Of Integer)
 Dim pick As New List(Of Integer)

For j = 0 To 13
            pick.Add(j)
        Next
        Dim randomvalue As Random = New System.Random
        Randomize()
        For j = 0 To 6
            Dim val = randomvalue.Next(pick(pick.Count - 1))
            ind.Add(val)
            pick.Remove(val)
        Next

与其让我们去猜是怎么回事,为什么不发布你的代码,这样我们就可以告诉你是怎么回事了?我们从这里看不到你的屏幕。另外,从列表中随机选择并不意味着它们都不会重复。如果你的代码不起作用,那么你的代码就错了。如果我们看不到你的代码,那么我们就看不出它出了什么问题。至于如何避免重复,答案应该显而易见。彩票如何避免选择重复的号码?选择后,它们只需将其从池中移除。为什么在这种情况下会有所不同?