【问题标题】:Generate random numbers without a specified range. Eg. random of 1, 6, 10, 12生成没有指定范围的随机数。例如。 1、6、10、12 的随机数
【发布时间】:2019-04-28 15:38:37
【问题描述】:

课堂作业让我们重新创建“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 个之间产生一个随机数,但没有任何运气。我假设随机。下一个可能不是要走的路。如果有人能给我一些提示或帮助我,我将非常感激!

【问题讨论】:

  • 回答我这个。你看过Random 文档吗?
  • 选择一个随机数[0..5),并将房间移动到可用房间列表中(本例中有5个)该数字的index:例如。 next_room = rooms[random.Next(rooms.Count)];
  • 让我考虑一下。我会尽快回复你。谢谢
  • 不需要指定一组特定的随机数,只需一个范围即可。考虑一下:numbers = new [] {15, 0, 1, 4, 7 }; number = numbers[random.Next(5)];。随机生成在 range 中选择一个数字并使用它映射到值 - 在这种情况下是通过数组索引。
  • @user2864740 我得到了代码工作。感谢您的帮助!

标签: c#


【解决方案1】:

从一组指定的数字中随机选择一个数字:

// 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];

【讨论】:

    【解决方案2】:

    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# 的更好的伪随机解决方案,以获得更多类似随机的选择。

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2015-07-21
      • 2016-05-04
      相关资源
      最近更新 更多