我正在编写一个赌博类型的游戏,随着机会减少,奖励需要变得更大。
例如,此处是以下机会百分比的目标最高奖励:
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个值的百分比输入找出其他值吗?
答案 0 :(得分:1)
你可以做一个简单的反向奖励功能。
假设P是范围[0,1]上的值。 P=1
表示保证获胜,而P=0
表示保证失败。
奖励值的简单算法R
,作为获胜概率P
的函数,将类似于:
R(P) = (1/P) -1
除了P
之外,这对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
),它恰好适合所有数据点
答案 1 :(得分: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;
}