gpt4 book ai didi

c# - asp.net C# 中的非重复随机数

转载 作者:行者123 更新时间:2023-11-30 19:20:27 25 4
gpt4 key购买 nike

我在 6 个 asp.net 面板服务器控件中有 6 个问题,我需要以随机顺序一个一个地展示所有面板(每次一个问题是可见的,另一个是不可见的)。

我不知道如何排除号码再次生成。我这样写:

    protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Random rnd = new Random();
int startNumber = rnd.Next(1, 6);
ShowNextPanel(startNumber);
}
}

private void ShowNextPanel(int excludeNumber)
{
Random rnd = new Random();
//I need to exclude the "excludeNumber" here but I don't know how !?
int number = rnd.Next(1, 6);
switch (number)
{
case 1:
{
Panel1.Visible = true;
break;
}
case 2:
{
Panel2.Visible = true;
break;
}
case 3:
{
Panel3.Visible = true;
break;
}
case 4:
{
Panel4.Visible = true;
break;
}
case 5:
{
Panel5.Visible = true;
break;
}
case 6:
{
Panel6.Visible = true;
break;
}
}

}
protected void Button1_Click(object sender, EventArgs e)
{
// InsertToDB(1, DropDownList1.SelectedValue);
Panel1.Visible = false;
ShowNextPanel(1);

}
protected void Button2_Click(object sender, EventArgs e)
{
// InsertToDB(2, DropDownList2.SelectedValue);
Panel2.Visible = false;
ShowNextPanel(2);

}
//and go on till button6_click

最佳答案

您可以将数字放在一个列表中,并生成随机数,而不是基于您的真实数字,而是基于列表中的剩余项目。

Random random = new Random();
List<int> nums = new {1, 2, 3, 4, 5, 6}; // or whatever you need to put there.
List<int> result = new List<int>(); // will hold your results in order.
while(nums.Count > 0){
int idx = random.next(0, nums.Count);
result.add(nums[idx]);
nums.RemoveAt(idx);
}
return result;

您不必在nums 列表中使用int 值;它可以是你的 Question 对象,或者你需要的任何东西;您将获得随机排列的元素。

关于c# - asp.net C# 中的非重复随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155739/

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