首页 > 解决方案 > 生成没有指定范围的随机数。例如。1、6、10、12 的随机数

问题描述

课堂作业让我们重新创建“Hunt The Wumpus”。射箭后,我可以选择将 Wumpus 留在原处,或者将 Wumpus 移动到我当前所在的房间,或与我当前所在房间相邻的三个房间中的任何一个。

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)。我射了一箭,没射中。Wumpus 现在必须移动,他的选择是房间 15、房间 0、房间 1、房间 4、房间 7。我一直在尝试随机。接下来尝试在这 5 个之间产生一个随机数,但没有任何运气。我假设随机。下一个可能不是要走的路。如果有人能给我一些提示或帮助我,我将非常感激!

标签: c#

解决方案


Wumpus 的选择将是由 5 个元素组成的数组,其中包括:{same}、{mine} 以及基于 Wumpus 所在位置的 3x 相邻房间。对于上述选择,您的随机界限将是 1-5(或 0-4),其中您在这些选择的数组的位置选择房间 #。因此,如果 Wumpus 在 3 号房间,您在 1 号房间,而 2、4 和 13 则您可以选择 {3、1、2、4、13} 如果 Rnd # 返回为“3” (0-4 分)然后 Wumpus 将移动到 4 号房间。

那么问题是如果你在相邻的房间里怎么办?例如,如果 Wumpus 在#3,而你在#4。这是否意味着 {3, 4, 2, 4, 13} 或者您只是从 4 个房间中选择。{3, 4, 2, 13} 您需要根据这两种解决方案之一来构建您的逻辑。

使用简单的随机生成,确保您只初始化一次随机序列,而不是每个游戏循环,因为它是基于计时器的,并且在循环内运行时您将生成类似的选择。您可以阅读 C# 的更好的伪随机解决方案,以获得更多类似随机的选择。


推荐阅读