Следующий код пытается штук позиции в случайных позициях на доске:Генерирование новое случайное число для каждой итерации
Function selectPlayer()
Dim rand As New Random()
Dim player As Integer = rand.Next(0, 3)
Return player
End Function
Function selectPiece()
Dim rand As New Random()
Dim piece As Integer = rand.Next(0, 4)
Return piece
End Function
Sub randomiseBoard(ByRef Board(,) As String)
Dim players() As String = {"W", "B", " "}
Dim pieces() As String = {"G", "E", "N", "M"}
For RankNo = 1 To BoardDimension
For FileNo = 1 To BoardDimension
Board(RankNo, FileNo) = players(selectPlayer) & pieces(selectPiece)
Next
Next
End Sub
Тип элемента выбирается из массива, содержащий символ, который представляет их, и в сочетании с игроком (Ч/Б), чтобы однозначно определить кусок.
При исполнении плата формируется, однако одна и та же позиция позиционируется на каждом квадрате.
Каждый раз, когда код запускается, создается и отображается новый фрагмент. Тем не менее - он не выбирает уникальную пьесу для каждой итерации.
Почему это? Как я могу это решить?
избавиться от 'Dim рандов As New Random()' внутри этих 2 методов. Создавая новый Случайный каждый раз, вы заверяете, что появляется тот же номер. Объявите его как «Private rand As New Random()» и повторно используйте его для обоих. – Plutonix
Кажется, есть некоторые недостатки вашей логики. Выбор случайным образом из «Игроков» не гарантирует равномерного распределения, то же самое для 'Pieces', где есть вероятность каких-то ограничений. Если предполагается, что они должны быть только 3 G, но до 7 M, для случаев нет ничего, что бы гарантировать это. – Plutonix