C# 如何在两个列表框之间按随机顺序划分数据表
我有一个有名字的表,我想把一半的名字放在一个列表框中,另一半随机放在另一个列表框中。这就是我现在拥有的:C# 如何在两个列表框之间按随机顺序划分数据表,c#,mysql,C#,Mysql,我有一个有名字的表,我想把一半的名字放在一个列表框中,另一半随机放在另一个列表框中。这就是我现在拥有的: private void ScheduleMaking() { Schema schema = new Schema(); schema.SchemaLoading(); lsbFirstRow.DataSource = schema.dt; lsbFirstRow.DisplayMember = "name"; string[] deelneme
private void ScheduleMaking()
{
Schema schema = new Schema();
schema.SchemaLoading();
lsbFirstRow.DataSource = schema.dt;
lsbFirstRow.DisplayMember = "name";
string[] deelnemersArray = new string[schema.dt.Rows.Count];
for (int i = 0; i < schema.dt.Rows.Count; i++)
{
deelnemersArray[i] = schema.dt.Rows[i]["name"].ToString();
Random rnd = new Random();
int number = rnd.Next(1, schema.dt.Rows.Count);
lsbSecondRow.Items.Add(deelnemersArray);
}
}
如果您有任何帮助,我们将不胜感激。您可以随机完成此操作,而无需返回一半的列表
int[] randomlyDrawnNumbers = new int[deelnemersArray.Count()];
List<string> NewStringList = new List<string>();
Random r = new Random();
for (int i = 0; i < deelnemersArray.Count()/2; i++)
{
int number;
while (true)
{
number = r.Next(0, deelnemersArray.Count());
if (randomlyDrawnNumbers[number]==0)
{
randomlyDrawnNumbers[number] = 1;
break;
}
}
NewStringList.Add(deelnemersArray[number]);
}
您应该声明Random rnd=new Random;只有一次,在你的循环之外。当你声明Random时,它广泛地使用时间作为随机数的种子,因此如果你在循环中不断地创建一个新的,你将得到非常相似的种子,因此在整个循环中它不会非常随机。