1

私は座って試行錯誤し、長い時間をかけて何かを試してみるのが好きなタイプです。しかし、私は完全に立ち往生しており、誰かが私を正しい方向に向けることができるかもしれないと思っていました.

1 人から 6 人のプレイヤーに、それぞれ特定のポイント値を持つ多数のオブジェクトを割り当てることができるスクリプトを作成しようとしています。

スクリプトは、各プレイヤーが獲得するポイント数を平均化する必要があります。

オブジェクトの新しいセットを追加して、すでに獲得した累積ポイント数に基づいて配布し、それらを配布して合計をできるだけ等しく保つことができるようにする必要があります。

[TL;DR ビット]

6人のプレーヤーがいるとしましょう。

ラウンド 1 では、6 つのボックスが「獲得」されます。2 つの大きなボックス @ "1000pts"、2 つの中型 @ "500pts"、2 つの小さなボックス @ "250pts" です。

スクリプトは明らかに、ボックスを各プレーヤーに 1 つ与える必要があります。

p1 1000 p2 1000 p3 500 p4 500 p5 250 p6 250

ラウンド 2 で同じ量のボックスが獲得されたとします。スクリプトは、スコアを可能な限り近づけるために、誰が何を獲得するかを計算する必要があります。

p1 250 p2 250 p3 500 p4 500 p5 1000 p6 1000 

の合計を与える

p1 1250 ps 1250 p3 1000 p4 1000 p5 1250 p6 1250

などを数回繰り返します。

基本的に、各プレイヤーの合計ポイントをできるだけ近くに保ちながら、ポイントを授与する方法を各ラウンドで解決する必要があります。

これの概念は、実際のコード自体は言うまでもなく、最善のアプローチが何であるかを理解しようとする際に頭痛の種になるため、どんな助けも大歓迎です!

4

3 に答える 3

0

疑似疑似コードで、問題を解決するための非常に簡単な解決策があると思います:

あなたが望むように「ボックス」の1つの最初の割り当て、おそらくランダム

獲得した合計値に応じて 2 位のプレーヤー

3 新しい「ボックス」を、スコア ポイントが最も大きいプレーヤーから始めて、最も低い値から最も高い値に割り当てます。

4 後藤 2

慣例を使用すると、これは次のようになります。

1°ラウンド ------------------- p1 1000 p2 1000 p3 500 p4 500 p5 250 p6 250

2°ラウンド ------------------- p1 1250 p2 1250 pr 1000 p4 1000 p5 1250 p6 1250

新しいプレーヤーの順序は次のようになります: p1 1250 p2 1250 p5 p1250 p6 1250 p3 1000 p4 1000

したがって、アルゴリズム agian を適用します: p1 1500 p2 1500 p5 1750 p6 1750 p3 2000 p4 2000

3°ラウンド新しいプレーヤーの順序は次のようになります: p3 2000 p4 2000 p5 1750 p6 1750 p1 1500 p2 1500

したがって、アルゴリズムを再度適用します: p3 2250 p4 2250 p5 2250 p6 2250 p1 2500 p2 2500

..それは動作するようです。

于 2013-07-31T14:12:01.643 に答える
0

各ラウンドの各ステップで、常に最も価値の高いボックスを、現在の資産が最も低いプレーヤーに渡します。富が同数のプレイヤーがいる場合は、ランダムに 1 人を選択します。

1 つのラウンドで同じプレーヤーに複数のボックスを割り当てたい場合とそうでない場合がありますが、それはあなた次第です。

次にどのボックスが登場するかを知っているか、以前のラウンドのボックスを後のラウンドで再配布する予定がない限り、この単純なアプローチに勝るものはないと思います。

于 2013-07-31T14:05:43.447 に答える