随机而不重复vb.Net

时间:2017-11-30 22:58:46

标签: arrays vb.net random static

我正在尝试制作一个小问答程序,从20个问题的数组中随机抽取5个随机问题而不重复任何问题 我搜索过,发现我需要使用" 静态"但它没有用 我也试过 System.Random() 但它总是重复相同的问题 当点击提交按钮时,我还需要关于表单加载和其他问题的初始问题,因此它们也不能重叠 有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

您不需要随机数字,而是随机排序的数字范围。

假设您的问题只是存储在String数组中,您可以使用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()

小提琴:Live Demo

答案 1 :(得分:0)

这是我试图避免重复,但它没有工作 这段代码应该从" 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