C# 二维数组值替换

标签 c# arrays random

我创建了一个这样的数组:

int[,] grid = new int[9, 9];

        Random randomNumber = new Random();
        var rowLength = grid.GetLength(0);
        var colLength = grid.GetLength(1);
        for (int row = 0; row < rowLength; row++)
        {
            for (int col = 0; col < colLength; col++)
            {
                grid[row, col] = randomNumber.Next(6);


            }

        }

这将生成一个 9x9 的二维数组,其中填充了随机数。 示例:

5 5 0 0 4 3 3 4 5
2 0 5 5 2 1 2 0 4
4 0 2 0 2 4 3 5 4
0 3 4 3 1 2 4 1 1
5 4 1 3 3 0 4 3 4
0 2 3 3 1 2 0 1 5
2 4 3 1 2 5 4 3 1
0 4 5 3 1 1 0 3 1
2 1 2 2 2 4 0 3 2

现在真正的问题来了:我怎样才能让零“消失”(零会被上面的值替换,或者零会向上移动到顶部)?显然,第一行的零在它们之上没有任何值,因此必须创建一个新的随机数。这次 randomNumber.Next(6)+1 也不是一个选项。 我试过这个,但没有用:

 foreach(int z in grid)
        {
        if(z==0)
        {
        if(col>0)
        {
        int a=grid[col,row];
        int b=grid[col-1,row];
        a=b;
        b=a;



        }
        else
        {
            int a = grid[col, row];
        Random randomNumber= new Random();
        a = randomNumber.Next(6) + 1;
        }



        }
        }   

编辑: 3x3 中的示例: 初始网格:

1 3 5

0 5 3

3 4 0

之后:

R 3 R

1 5 5

3 4 3

R=new randomNumber 不是 0

最佳答案

我知道这就是你想要的:(零将被替换为它们上方的值,或者零将向上移动到顶部)

    int[,] grid = new int[9, 9];
    Random randomNumber = new Random();
    var rowLength = grid.GetLength(0);
    var colLength = grid.GetLength(1);
    for (int row = 0; row < rowLength; row++)
    {
        for (int col = 0; col < colLength; col++)
        {
            grid[row, col] = randomNumber.Next(6);
            if(grid[row,col) == 0)
            {
                if(row == 0)
                {
                    while(true)
                    {
                       grid[row,col] = randomNumber.Next(6);
                       if(grid[row,col] == 0)
                          continue;
                       else
                          break;
                    }
                }
                else
                {
                    grid[row,col] = grid[row-1,col];
                }
            }                 
        }

    }

编辑:抱歉,在您向我展示输出后我检查了代码并意识到我忘记检查条目是否等于 0 :)

关于C# 二维数组值替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19876100/

相关文章:

python - 如何将列表中的随机值分配给同一行的另一列中不存在的新列?

c# - 使用带结构图的命名 session 实例策略的 Setter 剖分

c# - 将 IntPtr 解码为 MultiString

c# - 事务对象与连接对象不关联 - OracleClient

PHP 使用 preg_match 或正则表达式作为 array_search 的值或 array_keys_exist 的键

arrays - 解析 'Swift'中的多维数组

javascript - 范围错误: Invalid array length NodeJS

c# - 使用字符串作为变量的一部分

python - 生成随机字符串并检查是否等于静态字符串[Python]

java - 生成整数并丢弃最低值