-3

チャンスが少なくなるにつれて報酬が大きくなる必要があるギャンブルタイプのゲームをプログラミングしています。

たとえば、次の確率パーセンテージの目標最大報酬は次のとおりです。

100% = 1
50% = 250
0.01% = 2000

上記の値に一致するパーセンテージ値だけが与えられた場合、どの式を使用して報酬を計算できますか?

追加情報 1:

これが私の値と報酬乗数です - ハウス エッジは 2% です。

Percent: 97.651 ::: multiplier :: 1.0035 
Percent: 91.28 ::: multiplier :: 1.0736 
Percent: 86.3 ::: multiplier :: 1.1355 
Percent: 78.893 ::: multiplier :: 1.2421 
Percent: 72.1 ::: multiplier :: 1.3592 
Percent: 65.38 ::: multiplier :: 1.4989 
Percent: 50 ::: multiplier :: 1.96 
Percent: 47.76 ::: multiplier :: 2.0519 
Percent: 34.252 ::: multiplier :: 2.8611 
Percent: 29.51 ::: multiplier :: 3.3209 
Percent: 19.45 ::: multiplier :: 5.0385 
Percent: 11.44 ::: multiplier :: 8.5664 
Percent: 8.453 ::: multiplier :: 11.5935 
Percent: 6.876 ::: multiplier :: 14.2524 
Percent: 4.893 ::: multiplier :: 20.0286 
Percent: 2.465 ::: multiplier :: 39.7565 
Percent: 1.45 ::: multiplier :: 67.5862 
Percent: 1 ::: multiplier :: 98 
Percent: 0.46 ::: multiplier :: 213.0434 
Percent: 0.2348 ::: multiplier :: 417.3764 
Percent: 0.0984 ::: multiplier :: 995.9349 
Percent: 0.0344 ::: multiplier :: 2848.8372 
Percent: 0.01 ::: multiplier :: 9800

私が単純に知りたいのは、上記の 3 つの値に基づいて最大の賞金額を決定できるアルゴリズムがあるかどうかです。理由は、ベット額に関係なく、50% で最大報酬を 250 にし、0.01% で 2000 にしたいということです。これらの値に適合する最大賭け金を簡単に把握できます。

したがって、質問ではギャンブルについて言及するべきではなかったのかもしれません。問題は、上記の 3 つの値に適合するパーセンテージ入力に基づいて、他の値を把握できるかということです。

4

2 に答える 2

1

単純な逆報酬関数を実行できます。

P が範囲 [0,1] の値であるとしましょう。P=1は勝ちが保証されていることをP=0意味し、 は負けが保証されていることを意味します。

R勝利確率 の関数としての報酬値 の単純なアルゴリズムは、次のPようになります。

R(P) = (1/P) -1

Pこれは、 exceptのすべての値に対して有効です。このP=0場合、誰も取らない保証された損失であり、保証された勝利の場合、支払いはゼロであるため、報酬はゼロでなければなりません。

したがって、これを C で実装すると、次のようになります。

float reward(float chance) {
  float result;
  if (chance <= 0.0f) {
    result = 0.0f;
  } else {
    result = (1.0f / chance) - 1.0f;
  }
  return result;
}

これにより、急速に変化する曲線が得られます。サンプル プロットへのパーマリンクは次のとおりです。

http://fooplot.com/plot/jqvf3sqmys

ドロップオフを加速したい場合は、 の指数を変更するだけです(1/P)。つまり、次のようになります。

R(P) = (1/P)^2 -1  (Faster drop off)
R(P) = (1/P)^3 -1  (MUCH Faster drop off)

これは、そのような報酬を計算する一般的な方法です。上記の 3 つのデータ ポイントに適合させたい場合は、カーブ フィッティング、スプライン補間、一般化最小二乗法などを使用して、上記の方程式をデータ ポイントに最適に適合させる必要があります。または、テイラー多項式を使用して、すべてのデータ ポイントに正確にax^4 + bx^3 + cx^2 + dx + e適合する単純な 4 次多項式 (つまり: ) を生成することもできます。

幸運を!

于 2013-06-05T20:22:14.567 に答える
0

論理的なプレーヤーがギャンブルに参加するには、期待されるリターン値が自分の賭け金よりも大きくなければなりません。期待される戻り値はreward · probabilityであるため、次の式が得られます

reward · probability - stake ≥ 0

賞金の一部が課税される場合 (% で課税)、次のようになります。

reward · (1 - tax) · probability - stake ≥ 0

他のすべての変数がわかっている場合、良い報酬を次のように計算できます。

reward  ≥ stake /( (1-tax) · probability )

したがって、必要な報酬は確率の逆数に比例します。

勝つ確率が 0 であることは良くありませんが (これは 0 による除算のエラーです)、これは「負けた」ゲームと見なされるべきであるため、報酬の計算は必要ありません。

計算された報酬が高すぎる場合は、いつでも上限を設定できます (ただし、これにより、プレーヤーがギャンブルに参加する可能性が低くなります)

my $tax = 0.02; # 2%
my $max_reward = 2000;
my $min_reward = 1;

sub calculate_reward {
  my ($probability, $stake) = @_;
  die "zero probability, neccessary stake is infinite" if $probability <= 0;
  my $reward = $min_reward + $stake/( (1-$tax) * $probability);
  $reward = $max_reward if $reward > $max_reward;
  return $reward;
}
于 2013-06-05T20:19:52.573 に答える