关于c#:生成没有指定范围的随机数。


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