我的学校课程测验中的C#随机问题

时间:2018-11-28 09:41:58

标签: c#

嗨,所以当我尝试从文本文件中提取问题时,让多个问题随机化一直有些麻烦。

 Random Num = new Random();
 int Qnumber = Num.Next(QandAClass1.Questions.Count);

 label8.Text = QandAClass1.Questions.Count.ToString();

 // counts items in the list and selects random number from it 
 label1.Text = QandAClass1.Questions[Qnumber];

 ///////////////////////////////////////////////////////
 Answer = QandAClass1.Answers[Qnumber];

 label2.Text = Answer; // Stores ans for selected question 
 ///////////////////////////////////////////////////////
 QandAClass1.Questions.RemoveAt(Qnumber);
 QandAClass1.Answers.RemoveAt(Qnumber);

 label8.Text = QandAClass1.Questions.Count.ToString();

这是我目前所掌握的代码,虽然效果很好,但仅适用于一个问题。但是我一次在屏幕上有五个问题,我需要所有这些都是随机的。它们只是Windows窗体上的标签。任何帮助或指针,将不胜感激。谢谢:)此表格上的PS标签8只是我的检查器,以确保已阅读所有正确数量的问题。另外,我的标签2只是用于检查答案是否与问题匹配。

1 个答案:

答案 0 :(得分:1)

我建议采用这种方法。使基本流程正常运行。这是我经常用于随机分配商品的方法

  1. 如果可能,请使用包含问题和答案的类(如已 建议)
  2. 创建这些问题和答案的列表
  3. 显示问题和答案列表

一旦您对它起作用感到高兴,那么您的最后一项工作就是将一个列表随机化。 从主要的“问答”列表开始,然后创建一个新的空白显示列表。

从主列表中随机选择一个问答,并将其添加到显示列表中。现在,显示列表中只有一项,而主列表中少一项。重复此方法,直到有(随机)个显示项目或主列表为空。

每次从主列表中删除一项时,随机数索引的范围都会减小一。

Random rnd = new Random();
...
int randomIndex = rnd.Next(0, qaList.Count-1);