Generate random numbers without a specified range. Eg. random of 1, 6, 10, 12
课堂作业让我们重新创建了"捕猎乌姆普斯"。射箭后,我可以选择离开乌姆普斯所在的位置,或者将乌姆普斯移动到我当前所在的房间,或者移动到与我当前所在房间相邻的三个房间中的任何一个。
1 2 3 4 5 6 | adjacentRooms = new int[,] { {1, 4, 7}, {0, 2, 9}, {1, 3, 11}, {2, 4, 13}, {0, 3, 5}, {4, 6, 14}, {5, 7, 16}, {0, 6, 8}, {7, 9, 17}, {1, 8, 10}, {9, 11, 18}, {2, 10, 12}, {11, 13, 19}, {3, 12, 14}, {5, 13, 15}, {14, 16, 19}, {6, 15, 17}, {8, 16, 18}, {10, 17, 19}, {12, 15, 18} |
这是我的阵列。例如,假设我在0房间(索引0),wumpus在15房间(索引15)。我射了一支箭,但没射中。伍普斯现在必须搬家了,他的选择是15号房间,0号房间,1号房间,4号房间,7号房间。我一直在尝试随机数,接下来尝试在这5个之间产生一个随机数,但没有任何运气。我假设是随机的。下一步可能不是前进的道路。如果有人能给我一些提示或帮助我,我将不胜感激!
Wumpus的选择是由5个元素组成的数组,包括:相同,矿,以及基于Wumpus所在位置的3x相邻房间。对于上面的选择,您的随机边界将是1-5(或0-4),在这些选择的数组位置中选择房间。所以,如果wumpus在3号房间,你在1号房间,2号、4号和13号房间,你可以选择3号、1号、2号、4号、13号房间。如果rnd返回为"3"(0-4中的3),wumpus将移动到4号房间。
那么问题是如果你在隔壁房间里会怎么样?例如,如果wumpus在3,而您在4。这是指3、4、2、4、13还是从4个房间中选择。3、4、2、13您需要将逻辑结构为这两个解决方案之一。
使用简单的随机生成,确保您只初始化一次随机序列,而不是每个游戏循环,因为它是基于计时器的,并且在循环内运行时,您将生成类似的选择。您可以阅读更好的C伪随机解决方案,以获得更随机的类似选择。
要从指定的一组数字中随机选取一个数字:
1 2 3 4 5 6 7 8 9 10 11 12 | // Prepare a random number generator var rng = new Random(); // Get the set of options in a list. var choices = new List<int> { 15, 0, 1, 4, 7 }; // Pick a random index into that list. // Note that first parameter is inclusive, and second is exclusive. var randomSelection = rng.Next(0, choices.Count); // Take the option at that index var chosen = choices[randomSelection]; |