You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 带固定字符数量限制的4x4网格随机填充实现示例

完整实现示例

using System;

class GridFillDemo
{
    static void Main()
    {
        // 全局仅实例化一次随机数生成器,避免重复生成相同随机值
        Random rand = new Random();
        // 初始化4*4网格
        string[,] board = new string[4, 4];
        for (int y = 0; y < 4; y++)
        {
            for (int x = 0; x < 4; x++)
            {
                board[x, y] = ".";
            }
        }

        // 生成E的随机坐标并赋值
        int eX = rand.Next(4);
        int eY = rand.Next(4);
        board[eX, eY] = "E";

        // 生成T的随机坐标,循环判断确保和E的坐标不重复
        int tX, tY;
        do
        {
            tX = rand.Next(4);
            tY = rand.Next(4);
        } while (tX == eX && tY == eY);
        board[tX, tY] = "T";

        // 填充剩余格子为随机N/L
        string[] normalValues = {"N", "L"};
        for (int y = 0; y < 4; y++)
        {
            for (int x = 0; x < 4; x++)
            {
                // 跳过已经放置E、T的格子
                if (board[x, y] == "E" || board[x, y] == "T")
                {
                    continue;
                }
                // 每个格子单独生成随机索引,保证值的随机性
                int index = rand.Next(normalValues.Length);
                board[x, y] = normalValues[index];
            }
        }

        // 测试输出网格(可选)
        for (int y = 0; y < 4; y++)
        {
            for (int x = 0; x < 4; x++)
            {
                Console.Write(board[x, y] + " ");
            }
            Console.WriteLine();
        }
    }
}

原写法问题说明

  • 仅生成了一次随机索引index,所有格子复用同一个值,导致填充的N/L全部相同
  • 缺少E、T的放置逻辑,也没有做坐标去重处理,不符合规则要求

内容的提问来源于stack exchange,提问作者Skye Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:18:01