- 締切済み
テニスの乱数表作成
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- kitty2008
- ベストアンサー率31% (58/185)
- abe_onesel
- ベストアンサー率52% (20/38)
リーグ戦の組み合わせが説明されているサイトです。 http://www.bea.hi-ho.ne.jp/ems-ontime/infotext1_8.html 一番したの方にエクセルファイルがリンクされています。 このエクセルファイルを参考にしてみれば、大丈夫ではないかと思われます。 ※一部抜粋(14名の場合) 1 14 2 13 3 12 4 11 5 10 6 9 7 8 1 13 ・ ・ ・ ・ ・ ・ Aコート1試合目 1・14 vs 2・13 Bコート1試合目 3・12 vs 4・11 Aコート2試合目 5・10 vs 6・9 Bコート2試合目 7・8 vs 1・13 ダブルスであれば、上記で望みのものができると思います。 他にも、シェアウェアでソフトもあるようです。 http://www.vector.co.jp/soft/win95/home/se219137.html http://www.vector.co.jp/soft/winnt/home/se450363.html
- cistronezk
- ベストアンサー率38% (120/309)
シングルスかダブルスかの条件はどうなってるの?
補足
ありがとうございます。 2面でダブルスです。 よろしくお願いします。
- kitty2008
- ベストアンサー率31% (58/185)
それだけ条件を付けるのならば乱数で割り振るのは適切ではありません。 8人の場合、組合わせは8×7÷2で28通りしかありません。2面コートがあれば14回分です。 14人でも91通りです。 8x8表あるいは14x14の表を付くって斜め半分からピックアップしていったらよいでしょう。 14人いた場合 「同じ人が連続で休まない」というのは不可能です。
補足
説明不足ですみません。 固定のペアーでなく、参加者が試合後とに別の人とペアーになることを想定しています。 例を挙げます。 間違っていたらごめんなさい。 参加人数が10人とすると 10人から2人を取る組み合わせ = 10人から2人を取る組み合わせ 10C2 = 10*9/2 = 45 残りの8人から2人を取る組み合わせ = 10人から2人を取る組み合わせ 8C2 = 8*7/2 = 28 2組が対戦する組み合わせ 45*28 = 1260 つまり1260試合やれば全てのペアが別の全てのペアと対戦することができる。 1260回は不可能なので、1日で行える試合数(30試合程度)を 1260パターンから抽出するようにすればいいのだと思います。 その際に、同じ相手と何度も対戦しないように、休みが均等になるように抽出する。
- Sinogi
- ベストアンサー率27% (72/260)
お礼
ありがとうございました。 自己解決の記入ができないので、こちらで自己解決の報告をします。 10人から2人を取る組み合わせ = 10人から2人を取る組み合わせ 10C2 = 10*9/2 = 45 残りの8人から2人を取る組み合わせ = 10人から2人を取る組み合わせ 8C2 = 8*7/2 = 28 2組が対戦する組み合わせ 45*28 = 1260 つまり1260試合やれば全てのペアが別の全てのペアと対戦することができる。 1260試合は無理なので、休みが順序よくなるように、対戦相手の重複が2回までとなるように、抽出します。 そのやり方はプログラマでないと無理なのですが、 1260の配列からランダムに抜きだして、だめならやり直し、対戦しない人が0になるまで繰り返します。 その結果を質問の画像に貼り付けました。 そのうちにソフトを公開したいと思います。 ありがとうございました。
補足
ありがとうございます。 2つのHPは既に拝見しておりました。 ですが、やはり対戦相手まで考慮されていないと思います。
補足
早速のご回答ありがとうございます。 残念ながらEXCELと2つのシェアウエアともには対戦相手を考慮していないと思います。 つまり、ある相手とは何回も対戦するのに、一度も対戦しない人ができてしまいます。 EXCELで手作業で対戦相手を考慮して作成するのには、アップアップ状態で困っています。 よろしくお願いします。