Mos*_*afa 2 c# asp.net random numbers
我在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
Run Code Online (Sandbox Code Playgroud)
您可以将数字放在列表中,并根据实数生成随机数,但不会生成列表中的其余项目.
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;
Run Code Online (Sandbox Code Playgroud)
您不必int在nums列表中使用值; 它可以是你的Question对象,或者你需要的任何东西; 你会得到的是随机顺序的项目.
| 归档时间: |
|
| 查看次数: |
10101 次 |
| 最近记录: |