1

サンプルサイズが 10,000 の人物のコレクションがあるとします。コレクション内の各人物には、勝率 ( 0.00 < x < 1.00 ) の形式で評価スコアがあります。

現在、私のシステムはランダムに 2 人を選び、それらをマッチングさせています。勝率の高い人と勝率の高い人をペアにすることで、マッチメイキングを改善したいと考えています。

World of Warcraft アリーナをプレイしたことがありますか? 通常、2000 年代のブラケットにいる場合、2000 年代のブラケットにあるチームとマッチングされます。あなたが 1500 ブラケットにいる場合は、順位が近い人とマッチングされます。

このようなマッチメイキング システムを実装する最も簡単な方法は何ですか? 実装はそれほど重要ではありませんが、疑似コードでも役に立ちますが、JavaScript、バックボーン、およびアンダースコアをツールベルトとして使用して、正しい方向に導くことができれば幸いです。

4

1 に答える 1

2

勝率をソートキーとして使用して、バランスのとれた二分木 (頻繁に人を追加および削除する場合) またはソートされた配列 (データセットが多かれ少なかれ静的である場合) に全員を配置します。誰かを照合するには、ツリーまたは配列でそれらを見つけてから、乱数ジェネレーターを使用して、たとえば +/- 10 ランキング内の誰かと照合します (たとえば、配列を使用していて、その人物が i 番目のインデックスにある場合、次に、それらを i + rand(10) + 1 インデックスの人物と照合します)。

誰かの勝率は少しずつしか変化しないと思います。つまり、隣接する要素を交換するだけなので、ツリーまたは配列の更新は通常、一定時間の操作になります。

于 2013-06-17T03:16:57.783 に答える