我对linq很新,并希望做到以下几点。创建一个包含11个元素的数组(工作正常)包含20到35之间的随机数,没有重复。我的代码只给出了0到9之间的随机数。
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim r As New Random
'Create an array of exclusive numbers from 0 to 10
Dim exclusive_numbers() As Integer = Enumerable.Range(0, 10).OrderBy(Function(n) r.Next(20, 35)).ToArray
For x = 0 To 10
MsgBox (exclusive_numbers(x).ToString )
Next
End Sub
我真的很想做这项工作,但我担心此时此事已经过去了。任何帮助,想法或工作代码将不胜感激。 谢谢 乔治
答案 0 :(得分:5)
Dim r As New Random()
Dim exclusive_numbers As Integer() = Enumerable.Range(20, 16).OrderBy(Function(n) r.Next).Take(11).ToArray()
将生成在20-> 20 + 16-1 =>范围内的11个随机数。 20 =→35
你的原因是0-9仍然是因为那是你指定的可枚举数字范围(从0开始,生成10个整数,然后随机排序)
@JoelCoehoorn下面的注释,Random.Next()的顺序可能会导致异常。另一种方法是通过Guid.NewGuid()订购。
Enumerable.Range(20, 16).OrderBy(Function(t) Guid.NewGuid()).Take(11)