c# – 如何从随机池中选择一个数字,然后使这个数字无法重新选择
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何从随机池中选择一个数字,然后使这个数字无法重新选择,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2061字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何从随机池中选择一个数字,然后使这个数字无法重新选择](/upload/InfoBanner/zyjiaocheng/756/65fba92ca87d42029f306bad7c290e56.jpg)
我基本上试着写一个测验作为我的计算机编程课程的一部分,而且我遇到了一个麻烦的地方.
我希望从随机池中选择问题以阻止作弊,我可以使它在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# – 如何从随机池中选择一个数字,然后使这个数字无法重新选择全部内容,希望文章能够帮你解决c# – 如何从随机池中选择一个数字,然后使这个数字无法重新选择所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。