2

我想知道如何创建一个随机类,将表中的数据随机分配到 36 个其他表而不重复,以及如何打印出这些表。请问是编程新手

4

1 回答 1

1

撇开围绕“表格”的混淆,您随机分配 X 个项目的一般方式是:

  1. 把它们放在一个列表中,
  2. 随机选择一个项目
  3. 从列表中删除该项目
  4. 返回 1) 当还有可用的物品时

或在代码中(使用 1-200 的数字列表作为要分发的数据)

static Random random = new Random();
public static void Main(string[] args)
{
    var list = new List<int>(Enumerable.Range(1,200));
    while(list.Count>0)
    {
        var item = list[random.Next(0,list.Count)];
        list.Remove(item);

        // Do something with 'item'
    }
}

现场示例:http ://rextester.com/WBOK18374

但是,如果它的分布需要随机化,您可以将所有项目放在 a 中Queue,然后Dequeue一次一个地选择一个随机放置它们的位置。

在此示例中,再次使用数字 1-200 作为数据和 36List<int>作为目标,代码将类似于:

var tables = new List<int>[36];
for(var i=0;i<36;i++)
{
    tables[i] = new List<int>();
}

var stack = new Queue<int>(Enumerable.Range(1,300));
while(stack.Count>0)
{
    var next = stack.Dequeue();
    var table = tables[random.Next(0,36)];
    table.Add(next);
}

现场示例:http ://rextester.com/HBDWH46108

最后,如果这是您正在谈论的 SQL 表(您没有这样标记它,而是将其标记为 C# - 因此上面的答案),那么您不应该拥有 36 个看起来相同的表。您应该有 1 个包含您的数据的表,当它被提取时,您可以随机化结果。或者,当它被插入时,你可以随机分配任何东西。

于 2012-08-01T11:00:17.303 回答