2017-01-31 2 views
1

나는 대중적인 도박 웹 사이트에서 사용되는 시스템을 복제하는 개인 프로젝트에서 일하고 있습니다. 현재 내가 노력하고있는 시스템의 일부는 베셀에있는 특정 축전기의 누적 확률입니다. 역동적 인 운동 누적 확률

2.00 
2.00 
4.00 
10.00 

누적 확률

함께 확률을 곱에 의해 작동되며,이 것을 의미한다 :

당신을 보여줌으로써 나를 설명하기가 쉬울 수도, 아래에있는 내 betslip의 4 개 베팅의 확률은 만약 내가 위의 네 가지 베팅에 모두 베팅을했다면, 내 지분 (2 x 2 x 4 x 10)의 수익을 위해 10 크레딧을 말하면서 하나의 가치를 말합니다.

위의 베팅에 'treble'지분을 두는 경우 예를 들어 확률을 계산해야합니다. 나는 단지이 다음 작업을 수행 할 필요가 의미 수익을 얻기 위해 승리 위의 베팅의 세 가지가 필요합니다

10 학점의 내 지분은 현재 40 학점 때문에가되도록, 네 개의 개별 베팅입니다
2 x 2 x 4 = 16 
2 x 2 x 10 = 40 
2 x 4 x 10 = 80 
2 x 4 x 10 = 80 

나는 위의 각각에 대해 10 학점을받을 것이다.

가장 좋은 시나리오는 위의 모든 베팅에서 승리한다는 것이고, 내 스테이크 (16 + 40 + 80 + 80)의 216x를 돌려 줄 수 있습니다.

2 x 2 = 4 
2 x 4 = 8 
2 x 10 = 20 
2 x 4 = 8 
2 x 10 = 20 
4 x 10 = 40 

내가 누적 확률은 100 것을 알고,하지만 난이 쓰기 위해 애 쓰고 있어요 : 나는 '더블'을 해결한다면

다음 부분은 내가에 붙어하고있는 부분이다 PHP를 사용하여 코드를 부풀려서 지금까지 내가 만족스럽지 않은 간단한 코드를 만들었습니다.이 코드를 작성하는 간단한 방법이 될 가능성이 높지만 알아낼 수는 없습니다.

내 코드에서 사용할 수있는 정보는 확률의 배열이며 varialbe의 'multiple amount'입니다 (예 : 트레블의 경우 3 위를, 복식의 경우 2 위를 차지합니다. 20 배의 베팅 (betslip에서 20 개의 베팅)으로 2 배, 3 배, 4 배의 베팅이 가능하도록 다이내믹해야합니다. 배, 다섯 배, 등등.

$multiple = 2; 

/* 
    $multiple is equal to 2, which indicates that I need to return the doubles odds. 
    This number could be any number up to 19 & never higher than count($odds). 
*/ 

$odds = array(
    2.00, 
    2.00, 
    4.00, 
    10.00 
); 

/* 
    This array is will be passed as an argument in my function. 
    It will contain up to 20 different odds. 
*/ 

if($multiple < count($odds)) { 

    /* 
     This is where I need to work out the accumulative odds of doubles, trebles etc dynamically. 

     If correct, code should return: 
     100 for doubles 
     216 for trebles 

     It should also have the ability to return the odds of: 
     four-folds from up to 20 bets 
     five-folds up to 20 bets 
     etc.. 
    */ 

} else { 

    foreach($betOdds as $key => $betOdd) { 
     ($odds == 0.00 ? $odds = $betOdd : $odds *= $betOdd); 
    } 

} 

return $odds; 

나는이 사실을 잘 설명하지 못했기 때문에 아무 것도 명확하게 요구하지 않아도된다는 것을 알고 있습니다.

답변

1

필요한 것은 수학에서 "조합"이라고합니다. 이러한 질문은 has already been asked이지만 제공된 대답은 문자열에 숫자의 조합을 만드는 방법을 알려줍니다.이 배열 버전 :

(참고 : 나는 더 많은 읽을 수 있도록 내 예를 들어 2, 6, 410를 사용합니다),

class Combinations implements Iterator 
{ 
    protected $c = null; 
    protected $s = null; 
    protected $n = 0; 
    protected $k = 0; 
    protected $pos = 0; 

    function __construct($s, $k) { 
     if(is_array($s)) { 
      $this->s = array_values($s); 
      $this->n = count($this->s); 
     } else { 
      $this->s = (string) $s; 
      $this->n = strlen($this->s); 
     } 
     $this->k = $k; 
     $this->rewind(); 
    } 
    function key() { 
     return $this->pos; 
    } 
    function current() { 
     $r = array(); 
     for($i = 0; $i < $this->k; $i++) 
      $r[] = $this->s[$this->c[$i]]; 
     return is_array($this->s) ? $r : implode('', $r); 
    } 
    function next() { 
     if($this->_next()) 
      $this->pos++; 
     else 
      $this->pos = -1; 
    } 
    function rewind() { 
     $this->c = range(0, $this->k); 
     $this->pos = 0; 
    } 
    function valid() { 
     return $this->pos >= 0; 
    } 

    protected function _next() { 
     $i = $this->k - 1; 
     while ($i >= 0 && $this->c[$i] == $this->n - $this->k + $i) 
      $i--; 
     if($i < 0) 
      return false; 
     $this->c[$i]++; 
     while($i++ < $this->k - 1) 
      $this->c[$i] = $this->c[$i - 1] + 1; 
     return true; 
    } 
} 

이제 다음 루프를 실행하는 경우 :

foreach(new Combinations(["2", "6", "4", "10"], 3) as $combination) 
{ 
    var_dump($combination); 
} 

당신이 원하는 얻을 것이다 결과 :

array(3) { 
    [0]=> 
    string(1) "2" 
    [1]=> 
    string(1) "6" 
    [2]=> 
    string(1) "4" 
} 
array(3) { 
    [0]=> 
    string(1) "2" 
    [1]=> 
    string(1) "6" 
    [2]=> 
    string(2) "10" 
} 
array(3) { 
    [0]=> 
    string(1) "2" 
    [1]=> 
    string(1) "4" 
    [2]=> 
    string(2) "10" 
} 
array(3) { 
    [0]=> 
    string(1) "6" 
    [1]=> 
    string(1) "4" 
    [2]=> 
    string(2) "10" 
} 
,451,515,

양자 택일로, 당신은 즉시 결과 배열 요소의 제품을 얻을 수 있습니다

foreach(new Combinations(["2", "6", "4", "10"], 3) as $combination) 
{ 
    var_dump(array_product($combination)); 
} 

이 다음에 발생합니다 :

int(48) // because 2 * 6 * 4 = 48 
int(120) // because 2 * 6 * 10 = 120 
int(80) // because 2 * 4 * 10 = 80 
int(240) // because 6 * 4 * 10 = 240 
+0

완벽! 대단히 고마워, 많은 번거 로움을 덜어 줬어. –

관련 문제