-1

我想看看人们如何随机化具有不同值的网格的示例。这是原始板

string[,] board = new string[4, 4];
for (int y = 0; y < 4; y++)
{
    for (int x = 0; x < 4; x++)
    {
        board[x, y] = ".";
    }
}

我试图弄清楚如何放置随机字符而不是“。” 问题是需要填充的每个值的数量。例如,应该填充 1 个“E”和填充 1 个“T”,但网格的其余部分需要是“N”和“L”,数量无关紧要。

我试过这样做,但没有奏效

string[] values{"N", "L"}
int index = rand.Next(values.Length);

board[0, 0] = values[index];
board[0, 1] = values[index];
board[0, 2] = values[index];
board[0, 3] = values[index];
    //etc...```

我环顾四周,似乎找不到任何我正在尝试做的事情的例子。

4

2 回答 2

0

我会先填写“N”和“L”,然后用“E”和“T”替换两个随机位置

string[,] board = new string[4, 4];
string[] nl = { "N", "L" };
for (int y = 0; y < 4; y++)
{
    for (int x = 0; x < 4; x++)
    {
        board[x, y] = nl[rand.Next(2)];
    }
}

现在我们有一个充满“N”和“L”的板。让我们随机选择两个位置填写一个“E”和一个“T”

int x = rand.Next(4);
int y = rand.Next(4);
board[x, y] = "E";

int x2, y2;
// Ensure that we don't place the "T" at the same place as the "E"
do {
    x2 = rand.Next(4);
    y2 = rand.Next(4);
} while (x2 == x && y2 == y);
board[x2, y2] = "T";
于 2021-08-26T15:14:47.613 回答
0

您可以尝试以下代码:

private static Random random = new Random();
public static string RandomString(int length)
{
    const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    return new string(Enumerable.Repeat(chars, length)
      .Select(s => s[random.Next(s.Length)]).ToArray());
}
于 2021-08-26T14:38:10.897 回答