gpt4 book ai didi

c# - 如何从随机池中选择一个号码,然后让号码不能重新选择

转载 作者:行者123 更新时间:2023-11-30 13:36:52 24 4
gpt4 key购买 nike

我基本上是想写一个测验作为我的计算机编程类作业的一部分,但我遇到了麻烦。

我希望从随机池中选择问题以防止作弊,我可以让它在 1,8 之间随机选择,但这可能会导致重复提问,这是我不会做的事情我不想。

Random random = new Random(); // We use this random object to choose random icons for the squares.

List<int> Assignments = new List<int>()
{

1,2,3,4,5,6,7,8

};

Random RandomlyChooseNumbers = new Random();

int AssignmentForQ1;
int AssignmentForQ2;
int AssignmentForQ3;
int AssignmentForQ4;
string CorrectAnswerA1;
string CorrectAnswerA2;
string CorrectAnswerA3;
string CorrectAnswerA4;
public double timePassed;
public int calculatedScore;
public int timeLeft;

public frmQuizOneHardMode()
{
InitializeComponent();

AssignQuestionToTextQ1();

}

private void AssignQuestionToTextQ1()
{
int randomNumber = RandomlyChooseNumbers.Next(Assignments.Count);

AssignmentForQ1 = Assignments[randomNumber];

Assignments.RemoveAt(randomNumber);

AssignmentForQ2 = Assignments[randomNumber];

Assignments.RemoveAt(randomNumber);

AssignmentForQ3 = Assignments[randomNumber];

Assignments.RemoveAt(randomNumber);

AssignmentForQ4 = Assignments[randomNumber];

Assignments.RemoveAt(randomNumber);
}

但由于某种原因,数字总是相同的,这意味着 AssignmentForQ1、Q2、Q3 和 Q4 都显示完全相同的问题,我完全不知道这里出了什么问题,有人可以帮忙吗?

编辑:我个人要感谢 Jamiec,伙计,你是一个完整的救星,没有你我不可能做到这一点,谢谢!

最佳答案

你已经完成了一半。一般的想法是选择一个随机数,然后删除该元素,这样它就不能被重新选择。但是,您需要在每次尝试后从缩减集中选择一个随机数,以便所有元素都是随机的。

 int randomNumber1 = RandomlyChooseNumbers.Next(Assignments.Count);

AssignmentForQ1 = Assignments[randomNumber1];

Assignments.RemoveAt(randomNumber1);

// set is reduced
int randomNumber2 = RandomlyChooseNumbers.Next(Assignments.Count);

AssignmentForQ2 = Assignments[randomNumber2];

Assignments.RemoveAt(randomNumber2);

这可以通过使用数组进行赋值和循环来简化

int[] Questions = new int[4];
for(var i=0;i<Questions.Length;i++)
{
int randomNumber = RandomlyChooseNumbers.Next(Assignments.Count);
Questions[i] = Assignments[randomNumber];
Assignments.removeAt(randomNumber);
}

关于c# - 如何从随机池中选择一个号码,然后让号码不能重新选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28947610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com