关于random.Next()不返回random只返回0:random.Next()不返回random只返回0 – C#

random.Next() not returning random only returning 0 - C#

我相信这会被标记为一个副本,但我真的试图弄明白这一点。什么都没有。

我在头先C的练习中遇到了一个问题。我的问题是随机的,move()方法中的next(2)只返回0。下面是压缩代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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()方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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的链接,如果这有帮助的话,您可以看到整个项目。

提前感谢您的帮助!


我真的很抱歉。这很尴尬。我的问题是,我的断点是随机的,所以每次我检查它时,它总是零。再次非常抱歉浪费了人们的时间,谢谢你的建议。