Как мне сгенерировать случайные числа из списка указанных у меня чисел c? - PullRequest
0 голосов
/ 28 апреля 2020

Я хочу, чтобы мое приложение заполняло случайные наборы чисел, используя список указанных c чисел, которые я выбрал. Например; У меня есть набор чисел (1,3,5,9,21,70,56). Я хочу иметь возможность рандомизировать порядок, в котором эти числа выбраны. Это возможно?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2020

Если вы хотите сгенерировать список из 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()

Примечание: Не используйте Новый Случайный () в al oop

0 голосов
/ 28 апреля 2020
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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...