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的链接,如果这有帮助的话,您可以看到整个项目。
提前感谢您的帮助!
我真的很抱歉。这很尴尬。我的问题是,我的断点是随机的,所以每次我检查它时,它总是零。再次非常抱歉浪费了人们的时间,谢谢你的建议。