random.Next()不返回random仅返回0-C#

时间:2018-11-08 15:42:50

标签: c# random

我确定这将被标记为重复项,但是我确实尝试过解决这个问题。这里什么也没有。

在Head First C#中进行练习时遇到了一个问题。我的问题是我的random.Move()方法中的Next(2)仅返回0。这是压缩代码:

public class Opponent
    {
        private Location myLocation;
        private Random random;
        public bool Hidden { get; private set; }

        public Opponent(Location startingLocation)
        {
            myLocation = startingLocation;
            random = new Random();
            Hidden = false;
        }

        public void Move()
        {
            var coinFlip = random.Next(2);

            if (myLocation is IHasExteriorDoor)
            {
                if (coinFlip == 1)
                {
                    var myLocationWithDoor = (IHasExteriorDoor)myLocation;
                    myLocation = myLocationWithDoor.DoorLocation;
                }
            }

            myLocation = myLocation.Exits[random.Next(myLocation.Exits.Length)];
            while (!(myLocation is IHidingPlace))
            {
                myLocation = myLocation.Exits[random.Next(myLocation.Exits.Length)];
            }

            Hidden = true;
        }
    }

我尝试过移动random.Next(),将其直接放在if语句中,但这没有任何改变。

我还用书中的代码替换了我的代码,这似乎行得通。唯一的问题是我真的看不到区别。这是本书提供的Move()方法。

public void Move()
    {
        bool hidden = false;
        while (!hidden)
        {
            if (myLocation is IHasExteriorDoor)
            {
                IHasExteriorDoor locationWithDoor =
                                myLocation as IHasExteriorDoor;
                if (random.Next(2) == 1)
                    myLocation = locationWithDoor.DoorLocation;
            }
            int rand = random.Next(myLocation.Exits.Length);
            myLocation = myLocation.Exits[rand];
            if (myLocation is IHidingPlace)
                hidden = true;
        }
    }

我真的不明白为什么会使用random.Next()给我1和0但我却不给我

我尝试进行一些谷歌搜索,发现很多人在线程问题上遇到问题。他们正在创建多个以相同种子结尾的随机对象,从而接收相同的随机数。但是,我认为这不是正在发生的事情。

对这里发生的事情有何见解?这是指向我的GitHub的链接,因此您可以查看整个项目(如果有帮助的话)。

预先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我真的很抱歉。这很尴尬。我的问题是我的断点与random.Next(2)处于同一行,因此每次检查时它始终为零。再次非常抱歉,浪费您的时间,并感谢您的建议。