我想知道如何创建一个随机类,将表中的数据随机分配到 36 个其他表而不重复,以及如何打印出这些表。请问是编程新手
问问题
739 次
1 回答
1
撇开围绕“表格”的混淆,您随机分配 X 个项目的一般方式是:
- 把它们放在一个列表中,
- 随机选择一个项目
- 从列表中删除该项目
- 返回 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 回答