在由所有 0
值组成的二维整数数组(例如 int[3,3]
)中,我想设置 尽可能高效地将数组的 n
个随机元素设置为值 1
。我遇到的问题是,数组中的第一个元素比数组中后面的其他元素更有可能具有 1
值。
这是我的代码。在下面的示例中,我尝试将 3x3 数组中随机选择的 3 个元素设置为 1。
int sum = 0;
private void MakeMatrix()
{
for (int i = 0; i < 3; i++)
{
for (int k = 0; k < 3; k++)
{
int n = _r.Next(2);
if (n != 1 && sum < 3)
{
matrix[i, k] = 1;
sum++;
}
else
{
matrix[i, k] = 0;
}
}
}
}
最佳答案
您可以尝试以下操作。首先将矩阵初始化为全 0 值,然后运行下面的代码。它将矩阵中的三个随机值设置为 1。
int count = 0;
while (count < 3)
{
int x = r.Next(0, 3);
int y = r.Next(0, 3);
if (matrix[x, y] != 1)
{
matrix[x, y] = 1;
count++;
}
}
关于c# - 将多维数组的 n 个随机元素设置为一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14538614/