编写数学公式的合适方法

时间:2014-12-03 15:44:17

标签: php

我有一个公式,可以解决如何计算投注累加器的问题。

公式为:

  

赌注x(分数赔率+ 1)x(分数赔率+ 1)等......

我正在寻找一个循环几率的PHP函数,然后返回值。

我有一个如下数组(包含分数赔率)......

$odds = array(
'8/15',
'11/2',
'13/2',
'7/2'
);

一些示例PHP代码,它显示了我如何做到这一点(没有函数)......

$result = 10 * (8/15 + 1) * (11/2 + 1) * (13/2 + 1) * (7/2 + 1);
echo number_format($result,2); // 3,363.75

现在我的赌注设定为'10'。

我需要做的是遍历odds数组并将它们乘以括号并开始乘以Stake,因此测试用例为10.

有人可以建议一种方法来写这个吗?当我尝试写入*时,我不断收到PHP错误。

如果主题不适合社区,请说明我将删除。

由于

4 个答案:

答案 0 :(得分:3)

这样的事情应该有效

function compute ($stake, $values) {
    $result = $stake;

    foreach ($values as $val)
    {
        $parts = explode('/', $val);
        $result *= ($parts[0] / $parts[1] + 1);
    }

    return $result;
}


$stake = 10;
$odds = array (
    '8/15',
    '11/2',
    '13/2',
    '7/2'
);
$result = compute($stake, $odds);
var_dump($result);

以下是您可以使用的工作演示:http://3v4l.org/RNAGH

答案 1 :(得分:2)

我觉得你会在PHP的类型杂耍中获得不可预测的行为,所以使用explode分割分数字符串将是最好的方法

function calculate($stake, $odds)
{
    $res = $stake;
    foreach ($odds as $odd) {
        $split = explode('/', $odd);
        $res *= ($split[0] / $split[1]) + 1;
    }
    return $res;
}
echo calculate(10, $odds);

答案 2 :(得分:1)

你的意思是这样

 $stake = 10;
 $odds = array(
 '8/15',
 '11/2',
 '13/2',
 '7/2'
 );

 function formula($stake, array $odds){
    $result = $stake;

    foreach ($odds as $odd) {
        $digit = explode('/',$odd);
        $result *=  ($digit[0]/$digit[1] + 1);
    }
    return $result;
 }

 echo formula($stake, $odds);

答案 3 :(得分:-1)

像我这样的东西,我想

$res = stake;
foreach ($odds as $odd) {
    $res *= ((intval(explode("/", $odd)[0]) / intval(explode("/", $odd)[1])) + 1);
}
echo $res;