C# 生成没有指定范围的随机数。1、6、10、12的随机数

C# 生成没有指定范围的随机数。1、6、10、12的随机数,c#,C#,一个课堂作业让我们重新创造了亨特·乌姆普斯。射出箭头后,我可以选择离开Wumpus,或者将Wumpus移动到我当前所在的房间,或者移动到我当前所在房间附近的三个房间中的任何一个 adjacentRooms = new int[,] { {1, 4, 7}, {0, 2, 9}, {1, 3, 11}, {2, 4, 13}, {0, 3, 5}, {4, 6, 14}, {5,

一个课堂作业让我们重新创造了亨特·乌姆普斯。射出箭头后,我可以选择离开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个数字之间产生一个随机数,但没有任何运气。我假设是随机的。下一步可能不是办法。如果有人能给我一些提示或帮助我,我将不胜感激

Wumpus的选择是由5个元素组成的数组,包括:{same}、{mine},以及基于Wumpus所在位置的3个相邻房间。对于上述选择,您的随机边界为1-5或0-4,其中您在这些选择的数组位置选择房间。如果Wumpus在3号房间,你在1号房间,2号,4号,13号房间,你可以选择{3,1,2,4,13}如果Rnd返回0-4中的3号房间,那么Wumpus会移动到4号房间

那么问题是如果你在隔壁房间怎么办?例如,如果Wumpus在3,而你在4。这是指{3,4,2,4,13}还是从4个房间中挑选。{3,4,2,13}您需要根据这两种解决方案中的一种来构造逻辑


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

Wumpus的选择将是一个由5个元素组成的数组,包括:{same}、{mine},以及基于Wumpus所在位置的3个相邻房间。对于上述选择,您的随机边界为1-5或0-4,其中您在这些选择的数组位置选择房间。如果Wumpus在3号房间,你在1号房间,2号,4号,13号房间,你可以选择{3,1,2,4,13}如果Rnd返回0-4中的3号房间,那么Wumpus会移动到4号房间

那么问题是如果你在隔壁房间怎么办?例如,如果Wumpus在3,而你在4。这是指{3,4,2,4,13}还是从4个房间中挑选。{3,4,2,13}您需要根据这两种解决方案中的一种来构造逻辑


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

要从指定的一组数字中随机选择一个数字,请执行以下操作:

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

要从指定的一组数字中随机选取一个数字,请执行以下操作:

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

回答我这个问题。您看过随机文档了吗?选择一个随机数字[0..5],然后移动可用房间列表中的房间。在本例中,该数字的索引处有5个房间:例如next_room=rooms[Random.Nextrooms.Count]谢谢,我不需要有一组特定的随机数,只有一个范围。考虑一下:数字=新[] { 15, 0, 1,4, 7 };数字=数字[随机。NEX5];.random generate在一个范围内选择一个数字,并使用该数字映射到值-在本例中是通过数组索引。@user2864740我已使代码正常工作。谢谢你的帮助!回答我。你看过random文档了吗?选择一个随机数(0…5),在这个房间里移动房间,在这个例子中有5个数字:例如NeXoLoode=房间(Node.NexoRun.Calt);让我考虑一下。我会很快回复你。感谢你不需要有一组特定的随机数字,只有一个范围。考虑这个:数字= NeX[]。{15,0,1,4,7};number=numbers[random.Next5];。随机生成器在一个范围内选取一个数字,并使用该数字映射到值-在本例中是通过数组索引进行的。@user2864740我已使代码正常工作。感谢您的帮助!