-2

我希望我的应用程序使用我选择的特定数字列表填充随机数字集。例如; 我有一组数字(1,3,5,9,21,70,56)。我希望能够随机化选择这些数字的顺序。那可能吗?

4

2 回答 2

2

如果您想仅使用您提供的数字生成 1000 个数字的列表:

Dim r as New Random()
Dim thousand as New List(Of Integer)(1000)

'short way to create an array
Dim onlyFrom = {1,3,5,9,21,70,56}

For i = 1 to 1000 
  thousand.Add(onlyFrom(r.Next(0, onlyFrom.Length)))
Next i

它反复向 Random 询问 0 和数组长度之间的随机整数。Next() 可能会返回较小的数字,但绝不会返回较大的数字。文档

如果您想将您提供的这些数字随机排列,使用 LINQ 的简单方法:

Dim r as New Random()
Dim onlyFrom = {1,3,5,9,21,70,56}

Dim shuffled = onlyFrom.OrderBy(Function(x) r.Next()).ToArray()

注意:不要在循环中使用 New Random()

于 2020-04-28T17:27:58.337 回答
1
Randomize()
Dim NumberList= {1,3,5,9,21,70,56}
' Generate random value between 1 and 7,  or use NumberList length to make it generic
Dim value As Integer = CInt(Int(( 7 * Rnd()) + 1))  
return NumberList(value-1)

* 上面的代码可能会在一个系列中多次产生相同的值。因此,如果要求每次调用代码七次时从数组中生成不同的值,这将行不通*

如果要求在前 7 次调用中每次都具有与数组不同的值,您可以使用此处列出的 Shuffle 函数在 vb.net 中对字符串数组进行混洗

于 2020-04-28T17:58:15.407 回答