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时,它广泛地使用时间作为随机数的种子,因此如果你在循环中不断地创建一个新的,你将得到非常相似的种子,因此在整个循环中它不会非常随机。