我目前正在开发一款控制台问答游戏,为此,我需要从2D数组中随机选择随机问题。但我不确定如何从2D阵列中随机选择。
我无法显示我的完整数组,因为它们非常大 - 下面是修剪版本:
string[,] mineKategorier = new string[10, 6]
{
{"C#","Question one here", "Question two here", "Question three here"},
{"Spil engines", "Question one here", "Question two here", "Question three here"},
{"Sport", "Question one here", "Question two here", "Question three here"},
};
答案 0 :(得分:4)
Random rnd = new Random();
int row = rnd.Next(mineKategorier.GetLength(0));
int column = rnd.Next(mineKategorier.GetLength(1));
string randomKategori = mineKategorier[row, column];
答案 1 :(得分:1)
在您的应用程序中只有一个Random
对象是个好主意。您可以通过执行以下操作来实例化Random
对象:
Random random = new Random();
您可以使用此对象生成随机问题,如下所示:
int categoryNumber = random.Next(mineKategorier.GetLength(0));
int questionNumber = random.Next(1, mineKategorier.GetLength(1));
string category = mineKategorier[categoryNumber, 0];
string question = mineKategorier[categoryNumber, questionNumber];
我在第二行使用了1
,因为您使用每行的第一个条目作为该类别的名称。
答案 2 :(得分:0)
您要做的是生成一个介于0和数组长度之间的随机数。
var random = new Random();
var randomYIndex = random.Next(0, mineKategorier.GetLength(0));
var randomXIndex = random.Next(0, mineKategorier.GetLength(1));
var randomQuestion = mineKategorier[randomYIndex, randomXIndex];
这将创建一个新的Random
,当你调用Random.Next
时,你说我想要一个介于0和数组长度之间的值(但不是数组长度的值)。因此,如果您的数组长度为10,则随机将生成0到9之间的值,然后您可以使用该值索引到问题数组。
对GetLength
的调用将获得数组中每个索引的数组长度,因此GetLength(0)
将返回10,GetLength(1)
将在您的实例中返回6。
答案 3 :(得分:-1)
Random r1 = new Random();
Random r2 = new Random();
int column = r1.Next(0, 10);//here 10 is for first length
int row = r2.Next(0,6)// here 6 for 2nd length. you can use variable here also.
//now just pick from mineKategorier[,];
var value = mineKategorier[column,row];