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