2015-05-14 3 views
0

Следующий код пытается штук позиции в случайных позициях на доске:Генерирование новое случайное число для каждой итерации

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 

Тип элемента выбирается из массива, содержащий символ, который представляет их, и в сочетании с игроком (Ч/Б), чтобы однозначно определить кусок.

При исполнении плата формируется, однако одна и та же позиция позиционируется на каждом квадрате.

Каждый раз, когда код запускается, создается и отображается новый фрагмент. Тем не менее - он не выбирает уникальную пьесу для каждой итерации.

Почему это? Как я могу это решить?

+1

избавиться от 'Dim рандов As New Random()' внутри этих 2 методов. Создавая новый Случайный каждый раз, вы заверяете, что появляется тот же номер. Объявите его как «Private rand As New Random()» и повторно используйте его для обоих. – Plutonix

+0

Кажется, есть некоторые недостатки вашей логики. Выбор случайным образом из «Игроков» не гарантирует равномерного распределения, то же самое для 'Pieces', где есть вероятность каких-то ограничений. Если предполагается, что они должны быть только 3 G, но до 7 M, для случаев нет ничего, что бы гарантировать это. – Plutonix

ответ

0

Инициализировать генератор случайных чисел.

Randomize() 

Затем создать свой случайное значение