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

ただし、分散をランダム化する必要がある場合は、すべてのアイテムをに配置しQueueDequeue一度に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 に答える