テーブル内のデータを繰り返しなしで他の 36 個のテーブルにランダムに配布するランダム クラスを作成する方法と、それらのテーブルを印刷する方法を知りたいです。プログラミング初心者ですお願いします
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
ただし、分散をランダム化する必要がある場合は、すべてのアイテムをに配置しQueue
、Dequeue
一度に1つずつランダムな場所を選択して配置することができます。
この例でも、データとして1〜200の数字を使用List<int>
し、宛先として36を使用すると、コードは次のようになります。
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 に答える