プロが教えるわが家の防犯対策術!

テニス大会開催のため、プレーヤーの組み合わせに乱数表を使うことになり、過去の質問・回答を検索しテニス乱数表の作成法を2件見つけたのですが、1件は同じプレーヤーの組み合わせ(ペア)が複数組できてしまい、もう1件は一人当たりのゲーム数が同数にならない(一定の試合数で、ある人は2ゲーム、ある人は5ゲームなどバラつきが出る)ことがわかりました。
そこで以下の条件で乱数表の作成をお願いしたいのですが。

1.1日で完了するダブルスのテニス大会
2.参加者(プレーヤー)は、10-30人程度
3.コートは2面を並行使用の予定なので、一人が同時に2面に入らない
4.全員が一人あたり4ゲーム行う
5.全員が4ゲームともそれぞれ別の人とペアを組む(同じペアを複数回作らない)
6.対戦相手はそれ以前のゲームと同じ人でも構わない(5.があるので同じペアとの再戦はない)

よろしくお願いします。

A 回答 (6件)

No.2です。



一応、VBAで作ってみましたけど、かなり長くなってしまいました。
ここに投稿しようとすると、5回ぐらい連投しないといけなくなりそうですので
別の方法でお伝えさせていただきます。
もしかしたら規約違反かもしれませんので、その場合はあしからず。

まず、添付画像のような表を作成してください。
シート名は「Sheet1」としてください。
以下シートの内容です。
G列に選手名を列挙する(タイトル行なし、1行目から)
H列、I列は、1~人数までの乱数を発生させるために使用
J列以降は、ペアを組んだ人の名前を順に記録するために使用
(試合がなかった人は空白)
A~F列に、抽選結果(試合の組み合わせ)を出力する

次にSheet1を右クリックして「コードの表示」でVisual Basic Editorが起動しますので
参考URLのリンク先の本文に書いてあるコードをコピー&ペーストしてください。

ここでファイルをいったん保存して閉じ、開きなおしてください。
その時「マクロを有効にする」を選択してください。

ツール>マクロ>マクロで「Sheet1!抽選」というマクロを実行してください。

以上です。

参考URL:http://blog.goo.ne.jp/dondondon999/e/288d3f23e5a …
「テニス大会ダブルスの乱数表の作成をお願い」の回答画像6
    • good
    • 1
この回答へのお礼

don9don9様

お礼が遅くなり失礼しました。
大変なプログラムを作成いただき本当にありがとうございます、同時に、半ば諦めていましたので実際に使用できるものができて驚いています。
大いに参考にさせていただき、大会を盛り上げていきたいと思います。
ありがとうございました。

お礼日時:2010/11/23 04:32

「最大出場者だったら1日で終わらない」なら、


4試合→3試合調整、と思いましたがそうでもなければ、試合時間は問題ないです。

数字と選手名とで紐付けできていたら、
1試合目
「AB」と「CD」、データ上は「01ABCD」
「A」は誰、「B」は誰、「C」は誰、「D」は誰、
2試合目
「EF」と「GH」、データ上は「02EFGH」
「E」は誰、「F」は誰、「G」は誰、「H」は誰、
こんな考じで管理かと思います。
組み合わせペアをランダムに出すことよりもダブりがないかチェックのが面倒です。

それか、
将来的には仕組みを作るとして、
とりあえず、
ビンゴゲームに使う乱数を出す機器、シートを使う等しても
いいと思います。
    • good
    • 0

> 当方が乱数表に拘っているのは、ご回答のような方法ですと次の対戦者ないしはペアが誰なのか分かりやすく、時にはすぐ近くにいて、事前に打ち合わせなどができてしまう場合があり、公平性に欠けるかなと思うからです。

乱数表を使えば、番号がバラけて、誰がどこにいるか把握しにくくなり、ある程度公平性が保てるかなと思った次第です。


対戦表は、事前に作っておくんですよね?
もしかして、対戦のたびに乱数を発生させて、組み合わせを決めたいのでしょうか?

もし、対戦のたびに乱数を発生させるつもりなら、最後に近づくにつれて、ペア作成不可能になる可能性もあると思いますよ。

事前に乱数で対戦表を作ったとして、それを最初に公表するのであれば、やはり「事前に打ち合わせなどができてしまう場合」があるので、対戦ごとに発表するんですよね?

なのであれば、乱数で対戦を決めなくても、ある法則にしたがって対戦を決めて、その順序を適当に入れ替えて、それを対戦ごとに発表するだけで良いと思いますけど。

この回答への補足

ご回答ありがとうございます。
対戦表を事前に作っておいて大会当日の始めに掲示することを考えています。
もう少し補足しますと大会は、A:(自己申告)上級者、B:一般男子、C:一般女子+小学生以下、の3グループに分けて行います。それぞれの参加者は10-22名なので、全体では50-60名程度です。コートは全部で4面あり、適宜3グループに振り分けて行います。そのためそれぞれのグループに応じた人数の乱数表を作りたいと考えた次第です。
ドタキャンに備えて、その場で作成することも有り得ると考えています。
しかしながら、いくつかご回答をいただいて、(大会はJOPのポイント対象ではなく)親睦大会なのでそこまで拘る必要はないかなと思い始めました
ご指摘のように、乱数表を使わない組み合わせでも十分であるわけですからね。
ご回答をいただいた皆さま、ありがとうございました。
参考にしていたいただいて大会に臨みたいと思います。

補足日時:2010/11/19 22:46
    • good
    • 0

プログラムは作れるでしょうが時間かかります。



試合時間目安がわかりません。32人4試合は30分で終わると8時間です。

まずはA3で一目でわかる対戦計画記入シート作るのが良いと思います。

この回答への補足

ご回答ありがとうございます。
試合時間は、1試合4ゲ-ムノーアドで一人4試合ですので、全体で6時間程度と見積もっていますが、乱数表の作成に試合時間の見積もりが必要ですか?
質問にある通り、1日で完了する(しなければいけない)テニス大会ですので、進行によって時間調整を行います。

補足日時:2010/11/19 09:34
    • good
    • 0

申し訳ないですが、乱数での処理は不可能に近いと思います。



>4.全員が一人あたり4ゲーム行う
>5.全員が4ゲームともそれぞれ別の人とペアを組む(同じペアを複数回作らない)

この部分が厄介です。

同じペアを複数回作らない、ということであれば
一度作ったペアは全てどこかに記録しておかなければなりません。
その上で、乱数を発生させてペアを決める際に
・その人のペアは過去に組んだ相手ではないか?
・その人の試合数は4試合を超えていないか?
・その人の手空き数は、(人数÷2を切り上げた値) - 4を超えていないか?
などを複雑に計算しなければなりません。

後の試合になるほどペア成立条件が厳しくなるため、一度ではうまく成立せず
条件に合うまで何度も乱数を発生させ直す、ということになるかと思います。
ヘタをすると、最初の数試合のペアの成立状況によっては
何度乱数を発生させ直してもペアができない状況になる
(手詰まりになる)可能性もあります。

あらかじめ人数分の番号を振っておいて、
ローテーション方式にした方がよろしいかと思います。
    • good
    • 0

数珠をずらしていくイメージでどうでしょうか?



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試合以上となると、このやり方ではかぶってしまいます。

この回答への補足

ご回答をありがとうございます。
昼間ログインできない環境のため補足が遅れました、失礼しました。
ご回答いただいた方法は存じております。「ダブルスの組み方」などで検索すればいくつかの例が見つかります。
当方が乱数表に拘っているのは、ご回答のような方法ですと次の対戦者ないしはペアが誰なのか分かりやすく、時にはすぐ近くにいて、事前に打ち合わせなどができてしまう場合があり、公平性に欠けるかなと思うからです。乱数表を使えば、番号がバラけて、誰がどこにいるか把握しにくくなり、ある程度公平性が保てるかなと思った次第です。
ご理解のほど、よろしくお願いします。

補足日時:2010/11/17 21:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!