- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで組み合わせソフトを作ろうとしています)
VBAで組み合わせソフトを作り、スイスドローマッチングの階段処理に困っています
このQ&Aのポイント
- VBAで組み合わせソフトを作り、スイスドローマッチングの階段処理に困っています。スイスドローは同じ勝利数の人同士が対戦するようになっていますが、1勝の人と0勝の人が対戦する組み合わせが必ず発生します。現在の方法では階段の処理がうまく行えず、解決策を探しています。
- 質問者はVBAで組み合わせソフトを作り、スイスドローマッチングの階段処理に困っています。スイスドローでは同じ勝利数の人同士が対戦するため、1勝の人と0勝の人が対戦する組み合わせが必要です。しかし、現在の処理方法では階段をうまく処理できず、解決策を模索しています。
- VBAを使用してスイスドローの組み合わせソフトを作成している質問者は、階段の処理に問題があります。スイスドローでは同じ勝利数の人同士が対戦するため、1勝の人と0勝の人が対戦する組み合わせが必要です。現在の方法では階段の処理がスムーズに行われず、解決策を模索しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1をベースに処理を考えると、(2),(3)の部分で 出場者ごとに「勝利数をベースに乱数を加えたスコア」を計算し、そのスコアでソートします。 例1) スコア = 勝利数 + Rnd(乱数:1未満) 例2) スコア = 勝利数*10000 + レート(4桁) + Rnd(乱数0~1未満) 例3) スコア = 勝利数*10000 + レート(4桁) + 登録順/100(1未満) 1勝のスコアが2勝を上回らなければ、どんな計算でも構いません。不規則に結果が変わるのが嫌なら、レーティングなどの情報を用います(例2,3:レートが同じ場合は乱数や登録順で調整)。 ・・・という感じでしょうか。
その他の回答 (1)
- hitomura
- ベストアンサー率48% (325/664)
回答No.1
VBA はわからないんですが、Excel でやるとしてこんな感じでできませんか? (1)出場者リスト(勝利数記録欄つき)をシートとして用意しておく (2)マッチング開始時に上記シートを複製してマッチングリストシートにする (3)マッチングリストシートを勝利数で降順ソートする (4)マッチングリストシートで同一勝利数の選手をランダムに入れ替える (5)マッチングリストシートを上から2名ずつ読み、その2人をマッチングさせる (6)対戦が終わったら出場者リストの勝利者の勝利数記録欄を+1する (7)そのラウンドのすべての対戦が終わったら(2)へ
質問者
お礼
ありがとうございます。
お礼
ありがとうございます。