繁体   English   中英

从文本文件生成随机问题-C#

[英]Generating random questions from a text file - C#

我想为用户提供一系列问题,但我希望它们是随机的,拥有相同问题的问答游戏并不十分有趣。

我的想法是在文本文件中存储大量问题并提供适当的答案:

What colour is an Strawberry|Red
How many corners are there on a Triangle|Three

这意味着我可以简单地随机选择一条线,从该行中读取问题和答案,并将它们存储在要在游戏中使用的集合中。

我想出了一些伪代码,并提出了一种我认为有用的方法,并且正在寻找有关如何改进伪代码的输入:

Random rand = new Random();
int line;
string question,answer;

for(int i = 0; i < 20; i++)
{
   line = rand.Next();
   //Read question at given line number to string
   //Read answer at given line number to string
   //Copy question and answer to collection
}

在实现该想法方面,我不确定如何指定要读取的行号以及如何拆分整行并分别读取两个部分。 除非有更好的方法,否则我的想法是在文本文件中手动输入行号,后跟“ |” 所以每一行看起来像这样:

1|What colour is an Strawberry|Red
2|How many corners are there on a Triangle|Three

谢谢你的帮助!

为什么不使用ReadLine将整个文件读入数组或列表中,然后引用数组范围内的随机索引来提取问题/答案字符串,而不是在需要问题时从文本文件中读取。

至于解析,只需使用Split|处进行拆分即可| 定界符(并确保由于某种原因,问题中没有带|的问题)。 这也会使您存储有关该问题的一些错误答案(只需说第一个总是正确的,然后在输出时就可以将顺序随机化)。

您不想重复显示任何问题,对不对?

Random random = new Random();
var q = File.ReadAllLines("questions.txt")
    .OrderBy(x=>random.Next())
    .Take(20)
    .Select(x=>x.Split('|'))
    .Select(x=>new QuestionAndAnswer(){Question=x[0],Answer=x[1]});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM