質問

私は、可能なピースがたくさん入ったボードゲームをコーディングしています。各ターン、プレイヤーは特定のルールに従ってランダムに選択されたピースをバッグから取り出します。

私の実装では、最初にバッグを 1 人以上のプレーヤーのプールに分割する方が簡単かもしれません。これらのプールはランダムに選択されますが、今度は異なるプレイヤーが異なるバッグから選択することになります。これは何か違いますか?

1 人のプレイヤーのバッグがなくなった場合、一般の備蓄からさらにランダムにバッグがシャッフルされます。

役に立ちましたか?

解決

次の場合:

  • 「プール」へのパーティション。バッグはランダムです
  • 特定のプールバッグへのプレーヤーの割り当てはランダムです
  • ゲームは、プレイヤーによって描かれたアイテムがバッグから効果的に取り出されるようなものです(現在のゲームの間、バッグや他のバッグに戻されることはありません)
  • プレーヤーはバッグのいずれかのの内容を認識していません

2つのアプローチ(「オリジナル」と大きな共通バッグ1つ、「変更」とプレイヤーごとに1つのプールバッグは、確率に関して同等です。

一部のプレイヤーのバッグが空の場合、ゲームの終わりに向かって少し注意が必要になります。まだプレイ中のアイテムを100%から選択できる最も公平な方法です。したがって、どちらのバッグから選択するか、[もちろん]バッグから1つのアイテムを選択する必要があります。

この問題は、確率の興味深い特性を示しています。つまり、確率は、状況に関する知識の量に関連している。たとえば、ゲームホストは、「プール」がプレーヤーXに割り当てられたバッグには、発言レター「A」が含まれていません。 (スクラブルについて考えます)、しかし、プレイヤーの誰もこれを知らない限り(そしてプールバッグへのパーティションが完全にランダムである限り)、ゲームは公平なままで、プレイヤー「X」はおそらく「A」を打つことを彼/彼女が仮定する必要があります;次回手紙が描かれるとき、残りのすべての手紙が彼/彼女に利用可能であるかのと同じです。

編集:
両方の手順が完全に同等であるという主張の数学的妥当性に反して、チャンス要素を含むゲームでは 知覚は重要な要素です(特にゲームに金銭的コンポーネント)。この公平性を理解していないプレイヤーの怒りを避けるために、元の手順に固執することができます...

他のヒント

ゲームのルールによっては、@ mjvが正しい場合、最初のランダムな除算は確率に影響しません。これは、n人のプレイヤーが裏向きのデッキから順番にカードを引くゲームに似ています。デッキの最初のシャッフルは、「バッグ」へのランダムな分割です。各プレーヤーのカードの数。

ただし、各ドローの後にアイテムを交換する場合は、バッグが1つでも複数でも問題ありません。 1つのバッグでは、特定のアイテムが最終的に同じ確率でプレイヤーによって描かれます。多くのバッグがある場合、そのアイテムはバッグが最初に置かれたプレイヤーによってのみ描かれます。

ソフトウェアレベルにポップアップします。ゲームで1つのバッグが必要な場合は、そのようにプログラミングすることをお勧めします。n個のバッグよりも難しくなく、新しいゲームを証明する必要はありません。古いものと同等。

私の直感では、物のランダムなコレクションを小さなランダムなサブセットに分割しても等しくランダムになります...プレイヤーが大きなプールから選ぶか、小さなプールから選ぶかは関係ありません大きなもの)

ゲームの場合は、ランダムで十分です。

セキュリティがどれほど重要かによっては、大丈夫かもしれません(お金が関係している場合は(あなたまたは彼ら)、それをしないでください)。無知なプレイヤーの観点からすると、それがよりランダムでなくなるかどうかは完全にはわかりません。

a) 彼らが無知であると期待しないでください。あなたのプログラムがクラックされる可能性があります。そうすれば、彼らはどのような部分が登場するかを知るでしょう。

b) 脆弱性を生じさせないようにバッグを詰めるのは非常に困難です。たとえば、ランダムに 1 つを選択し、それを最初のバケットに入れて取り出し、2 番目のバケットでも同じことを行うという単純なアルゴリズムを考えてみましょう。N 個の駒がある場合、最初のプレイヤーが特定の駒を選ぶ確率は 1/N、2 番目のプレイヤーは 1/(N-1)、3 人目は 1/(N-3) であることを確認しました。すぐ。その後、プレーヤーは、他のプレーヤーが特定の駒を持っている確率を把握するために、すでにプレイされた駒を分析できます。

考える 次のアルゴリズムの方がうまく機能する可能性がありますが、ほとんどすべての人が、初めて新しいアルゴリズムを思いついたときに確率を間違えます。これは使用しないでください。理解してください かもしれない 私が話したセキュリティの脆弱性をカバーします。

  1. N 個の注文済みアイテムのリストを作成し、P 個のプレーヤーをインスタンス化します
  2. プレイヤーごとにアイテムをランダムに1/Pマーク(交換あり)
  3. すべてのnアイテムがマークされ、各プレーヤーにマークが付いているアイテムが同じ数になるまで、これを繰り返し行います(注:N と P によっては、生存期間よりもはるかに長い時間がかかる場合があります)
  4. プレイヤーのバケツに適切なアイテムを配置し、ランダムに並べ替えます (位置交換アルゴリズムは使用しないでください)。

これらすべてを行った後でも、誰かがエクスプロイトによってバケットの内容を把握できる脆弱性が依然として存在する可能性があります。組み合わせたプールを使用してください。本当にランダムに選択するのは依然として難しいですが、作業は楽になります。

編集:音がぎくしゃくしているのはわかります。私は主に、文脈を無視してこれを読んでこれらのアルゴリズムのいくつかを試す可能性のある人々のために、太字をすべて含めました。本当にご冥福をお祈りします:-)

編集2:さらに詳しく考えてみると、順番に選ぶことの問題は、そもそもプレイヤーが順番に交代することに帰着するのではないかと思います。それがすでにルールにある場合は問題ないかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top