地图生成器缺乏随机性

时间:2014-01-28 23:16:03

标签: c# random grid graphics2d

我正在尝试生成0-49的随机数。我想在网格中绘制链接,只要随机数不是0.每次我得到一个0,然后是另外十个0(给或拿)。在我的研究中,他们说如果我不断创建我的Random的新实例,这将是问题,但我不这样做。我的代码如下:

//Class begins
    namespace Mascape
    {
        public class Game1 : Game
        {
            GraphicsDeviceManager graphics;
            SpriteBatch spriteBatch;
            Wall[, ,] walls = new Wall[2, 15, 10];
            int mapWidth=15;
            int mapHeight=10;
            Random rand = new Random();  //Outside of any methods or loops.
            int mapFullness;

//以下是我的Initialize()方法

//i is horizontal vs. vertical link
//j is the x position of the link
//k is the y position of the link


        mapFullness = 50;
        for (int i = 0; i < 2; ++i)
        {
            for (int j = 0; j < mapWidth; ++j)
            {
                for (int k = 0; k < mapHeight; ++k)
                {
                    if (!(rand.Next(50) == 0))
                    {
                        walls[i, j, k].active = true; //Links are drawn if active
                    }
                }
            }

        }

我正在尝试绘制一个随机缺失链接的网格。目标是让它们展开,大约出现在50中。这是实际结果:

enter image description here

知道为什么缺乏随机性?如果您想了解更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

应该有更多这个。请参阅以下从您的代码复制的代码按预期生成随机。

        Random rand = new Random();
        int mapWidth = 5;
        int mapHeight = 10;

        for (int i = 0; i < 2; ++i)
        {
            for (int j = 0; j < mapWidth; ++j)
            {
                for (int k = 0; k < mapHeight; ++k)
                {
                    Console.WriteLine(rand.Next(50));
                }
            }

        }