- ベストアンサー
テニス大会ダブルス乱数表の作成方法
- テニス大会ダブルスの乱数表を作成する方法について説明します。テニス大会の開催には、プレーヤーの組み合わせに乱数表が必要となりますが、過去の質問・回答を検索してもうまく作成できる方法が見つかりませんでした。そこで以下の条件を満たす乱数表の作成方法をお伝えします。
- 1.1日で完了するダブルスのテニス大会を開催します。 2.参加者(プレーヤー)は、10-30人程度です。 3.コートは2面を並行使用する予定ですが、一人が同時に2面に入ることはありません。 4.全員が一人あたり4ゲーム行います。 5.全員が4ゲームともそれぞれ別の人とペアを組みます。 6.対戦相手はそれ以前のゲームと同じ人でも構いません。
- 以上の条件を満たす乱数表の作成方法は、現在見つかっていません。テニス大会の開催に際しては、別の方法でプレーヤーの組み合わせを決定する必要があります。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.2です。 一応、VBAで作ってみましたけど、かなり長くなってしまいました。 ここに投稿しようとすると、5回ぐらい連投しないといけなくなりそうですので 別の方法でお伝えさせていただきます。 もしかしたら規約違反かもしれませんので、その場合はあしからず。 まず、添付画像のような表を作成してください。 シート名は「Sheet1」としてください。 以下シートの内容です。 G列に選手名を列挙する(タイトル行なし、1行目から) H列、I列は、1~人数までの乱数を発生させるために使用 J列以降は、ペアを組んだ人の名前を順に記録するために使用 (試合がなかった人は空白) A~F列に、抽選結果(試合の組み合わせ)を出力する 次にSheet1を右クリックして「コードの表示」でVisual Basic Editorが起動しますので 参考URLのリンク先の本文に書いてあるコードをコピー&ペーストしてください。 ここでファイルをいったん保存して閉じ、開きなおしてください。 その時「マクロを有効にする」を選択してください。 ツール>マクロ>マクロで「Sheet1!抽選」というマクロを実行してください。 以上です。
その他の回答 (5)
- layy
- ベストアンサー率23% (292/1222)
「最大出場者だったら1日で終わらない」なら、 4試合→3試合調整、と思いましたがそうでもなければ、試合時間は問題ないです。 数字と選手名とで紐付けできていたら、 1試合目 「AB」と「CD」、データ上は「01ABCD」 「A」は誰、「B」は誰、「C」は誰、「D」は誰、 2試合目 「EF」と「GH」、データ上は「02EFGH」 「E」は誰、「F」は誰、「G」は誰、「H」は誰、 こんな考じで管理かと思います。 組み合わせペアをランダムに出すことよりもダブりがないかチェックのが面倒です。 それか、 将来的には仕組みを作るとして、 とりあえず、 ビンゴゲームに使う乱数を出す機器、シートを使う等しても いいと思います。
- nattocurry
- ベストアンサー率31% (587/1853)
> 当方が乱数表に拘っているのは、ご回答のような方法ですと次の対戦者ないしはペアが誰なのか分かりやすく、時にはすぐ近くにいて、事前に打ち合わせなどができてしまう場合があり、公平性に欠けるかなと思うからです。乱数表を使えば、番号がバラけて、誰がどこにいるか把握しにくくなり、ある程度公平性が保てるかなと思った次第です。 対戦表は、事前に作っておくんですよね? もしかして、対戦のたびに乱数を発生させて、組み合わせを決めたいのでしょうか? もし、対戦のたびに乱数を発生させるつもりなら、最後に近づくにつれて、ペア作成不可能になる可能性もあると思いますよ。 事前に乱数で対戦表を作ったとして、それを最初に公表するのであれば、やはり「事前に打ち合わせなどができてしまう場合」があるので、対戦ごとに発表するんですよね? なのであれば、乱数で対戦を決めなくても、ある法則にしたがって対戦を決めて、その順序を適当に入れ替えて、それを対戦ごとに発表するだけで良いと思いますけど。
補足
ご回答ありがとうございます。 対戦表を事前に作っておいて大会当日の始めに掲示することを考えています。 もう少し補足しますと大会は、A:(自己申告)上級者、B:一般男子、C:一般女子+小学生以下、の3グループに分けて行います。それぞれの参加者は10-22名なので、全体では50-60名程度です。コートは全部で4面あり、適宜3グループに振り分けて行います。そのためそれぞれのグループに応じた人数の乱数表を作りたいと考えた次第です。 ドタキャンに備えて、その場で作成することも有り得ると考えています。 しかしながら、いくつかご回答をいただいて、(大会はJOPのポイント対象ではなく)親睦大会なのでそこまで拘る必要はないかなと思い始めました ご指摘のように、乱数表を使わない組み合わせでも十分であるわけですからね。 ご回答をいただいた皆さま、ありがとうございました。 参考にしていたいただいて大会に臨みたいと思います。
- layy
- ベストアンサー率23% (292/1222)
プログラムは作れるでしょうが時間かかります。 試合時間目安がわかりません。32人4試合は30分で終わると8時間です。 まずはA3で一目でわかる対戦計画記入シート作るのが良いと思います。
補足
ご回答ありがとうございます。 試合時間は、1試合4ゲ-ムノーアドで一人4試合ですので、全体で6時間程度と見積もっていますが、乱数表の作成に試合時間の見積もりが必要ですか? 質問にある通り、1日で完了する(しなければいけない)テニス大会ですので、進行によって時間調整を行います。
- don9don9
- ベストアンサー率47% (299/624)
申し訳ないですが、乱数での処理は不可能に近いと思います。 >4.全員が一人あたり4ゲーム行う >5.全員が4ゲームともそれぞれ別の人とペアを組む(同じペアを複数回作らない) この部分が厄介です。 同じペアを複数回作らない、ということであれば 一度作ったペアは全てどこかに記録しておかなければなりません。 その上で、乱数を発生させてペアを決める際に ・その人のペアは過去に組んだ相手ではないか? ・その人の試合数は4試合を超えていないか? ・その人の手空き数は、(人数÷2を切り上げた値) - 4を超えていないか? などを複雑に計算しなければなりません。 後の試合になるほどペア成立条件が厳しくなるため、一度ではうまく成立せず 条件に合うまで何度も乱数を発生させ直す、ということになるかと思います。 ヘタをすると、最初の数試合のペアの成立状況によっては 何度乱数を発生させ直してもペアができない状況になる (手詰まりになる)可能性もあります。 あらかじめ人数分の番号を振っておいて、 ローテーション方式にした方がよろしいかと思います。
- nattocurry
- ベストアンサー率31% (587/1853)
数珠をずらしていくイメージでどうでしょうか? 10人以上ということですが、まずは8人の場合から。 参加者が1から順にゼッケンをつけているとして、 1&8 Aコート1試合目 vs 2&7 3&6 Bコート1試合目 vs 4&5 その後は、 8&7 Aコート2試合目 vs 1&6 2&5 Bコート2試合目 vs 3&4 次は、 7&6 Aコート3試合目 vs 8&5 1&4 Bコート3試合目 vs 2&3 最後は、 6&5 Aコート4試合目 vs 7&4 8&3 Bコート4試合目 vs 1&2 こうすれば、全員が4試合ずつやって、同じ人とペアになることも無く、同じ人が同時に2面に入ることもありません。 15人なら、4で割り切れる人数だけで、組んで、 1&12 Aコート1試合目 vs 2&11 3&10 Bコート1試合目 vs 4&9 5&8 Aコート2試合目 vs 6&7 次は、余った人を先頭にして、また4で割り切れる人数。 13&9 Bコート2試合目 vs 14&8 15&7 Aコート3試合目 vs 1&6 2&5 Bコート3試合目 vs 3&4 同様に、 10&6 A4 vs 11&5 12&4 B4 vs 13&3 14&2 A5 vs 15&1 7&3 B5 vs 8&2 9&1 A6 vs 10&15 11&14 B6 vs 12&13 4&15 A7 vs 5&14 6&13 B7 vs 7&12 8&11 A8 vs 9&10 他の人数に関しては、まったく検証していませんが、同様のやり方でいけるような気がします。 ちなみに、1人5試合以上となると、このやり方ではかぶってしまいます。
補足
ご回答をありがとうございます。 昼間ログインできない環境のため補足が遅れました、失礼しました。 ご回答いただいた方法は存じております。「ダブルスの組み方」などで検索すればいくつかの例が見つかります。 当方が乱数表に拘っているのは、ご回答のような方法ですと次の対戦者ないしはペアが誰なのか分かりやすく、時にはすぐ近くにいて、事前に打ち合わせなどができてしまう場合があり、公平性に欠けるかなと思うからです。乱数表を使えば、番号がバラけて、誰がどこにいるか把握しにくくなり、ある程度公平性が保てるかなと思った次第です。 ご理解のほど、よろしくお願いします。
お礼
don9don9様 お礼が遅くなり失礼しました。 大変なプログラムを作成いただき本当にありがとうございます、同時に、半ば諦めていましたので実際に使用できるものができて驚いています。 大いに参考にさせていただき、大会を盛り上げていきたいと思います。 ありがとうございました。