-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)

这是计算此类奖励的一般方法。如果您希望它适合您上面提到的三个数据点,您将不得不求助于曲线拟合、样条插值、广义最小二乘等,以使上述方程与您的数据点最佳拟合。或者您可以使用泰勒多项式生成一个简单的 4 阶多项式方程(即:)ax^4 + bx^3 + cx^2 + dx + e,它完全适合您的所有数据点

祝你好运!

于 2013-06-05T20:22:14.567 回答
0

对于一个有逻辑的玩家进行赌博,预期回报值必须大于他的赌注。预期返回值为reward · probability,所以我们有等式

reward · probability - stake ≥ 0

如果部分奖金被征税(百分比税),那么我们有

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

如果所有其他变量都已知,我们可以计算好的奖励为

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

因此,所需的奖励与概率的倒数成正比。

获胜的概率为零并不好(这是除以零错误),但这应该被视为“失败”的游戏,因此不需要计算奖励。

如果计算的奖励太高,总是可以设置上限(但这会使玩家不太可能参与赌博)

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 回答