winforms 希望Answer与随机生成的问题匹配

gblwokeq  于 2023-03-31  发布在  其他
关注(0)|答案(2)|浏览(155)

我正在做一个测验,我从15个问题中随机生成了一个问题。正确答案在一个单独的列表中,但它们都匹配,即答案[0]是问题[0]的正确答案。

Random random = new Random();
lblQuestion.Text = Questions[random.Next(0, Questions.Count - 1)];

btnCorrect.Text = Answers[];
btnIncorrect1.Text = Answers[random.Next(0, Answers.Count - 1)];
btnIncorrect2.Text = Answers[random.Next(0, Answers.Count - 1)];
btnIncorrect3.Text = Answers[random.Next(0, Answers.Count - 1)];

我尝试创建一个int“a”,并使其等于lblQuestion.Text.Count,但这总是输出“2”。

ddhy6vgd

ddhy6vgd1#

只需存储您的随机整数并将其用于答案:

Random random = new Random();
int questionNumber = random.Next(0, Questions.Count - 1);
lblQuestion.Text = Questions[questionNumber];
btnCorrect.Text = Answers[questionNumber];

一种更传统的实现方法是创建一个包含问题和答案的类,将它们都放在一个数组中,然后通过泛型Random.Shuffle方法对该数组进行 Shuffle 。现在,您可以使用第一个项目作为问题和正确答案,接下来的三个项目作为错误答案。
你目前的方法的问题是,你把正确的答案放回池子里,让它成为错误的答案。你通过 Shuffle 和使用特定的索引来避免这种情况。

8e2ybdfx

8e2ybdfx2#

你有没有考虑过使用Dictionary?你可以重构你的问题/答案存储在字典中,问题是关键,答案是值,以更有效地找到与你的问题相关的答案。

Dictionary <string,string> content = new Dictionary<string,string>();

总的来说,我认为创建一个结构体可能更适合你的问题。

相关问题