6 votos

La aplicación de una Fórmula Matemática en una forma más elegante (tal vez una llamada recursiva que hacer el truco)

Este es mi primer post en la sección de Matemáticas. He sido redirigido aquí de StackOverflow, los usuarios de allí me propuso pedir aquí.

Esto puede parecer un poco complejo a primera vista, pero después de todo no hay nada especial.

Estamos en un poker touranment, hay 'n' jugadores, cada uno tiene una pila de fichas. Sólo hay 'p' lugares para ser pagados al final del torneo.

Queremos aplicar una fórmula matemática para convertir a los jugadores reales' pilas en dinero. Por lo que llamamos "capital" de la probabilidad de cada jugador para terminar el torneo en que pagó cada lugar.

Voy a plantear la hipótesis de que hay 4 jugadores (P1,P2,P3,P4) y 3 paga lugares:

La equidad en el 1er lugar es:

$eq1_1 = ($P1_stack / $total_chips);
$eq2_1 = ($P2_stack / $total_chips);
$eq3_1 = ($P3_stack / $total_chips);
$eq4_1 = ($P4_stack / $total_chips);

La equidad en el 2do lugar:

Para calcular el capital de cada jugador en el 2do lugar tenemos a la hipótesis de que cada uno de los remanentes de los jugadores ha ganado el primer premio, reste su(el ganador) de la pila del total de fichas, dividir el jugador 2 fichas por los remanentes de los chips, y multiplicar este número por la probabilidad(la equidad en 1er premio del jugador que ganó el 1er premio). Yo sé, cerebros' explosiones se han reportado aquí.

//-if P2 wins the tornament
$eq1_2 = $eq2_1*($P1_stack/($total_chips-$P2_stack));
//-if P3 wins the tornament
$eq1_2 = $eq1_2 + $eq3_1*($P1_stack/($total_chips-$P3_stack));
//-if P4 wins the tornament
$eq1_2 = $eq1_2 + $eq4_1*($P1_stack/($total_chips-$P4_stack));

si hubiera habido más jugadores el ciclo debería haber continuado.

La equidad en el 3er lugar

Si su cerebro no ha explotado aún, después de leer esto :p Para calcular P1 equidad en el 3er lugar tenemos a: 1) Restar el ganador Y el segundo ganador de pilas de el total de fichas. 2) Reste P1 pila de la cantidad que tenemos. (Remainingstack) 3) Calcular el capital de la segunda ganador en segundo lugar después de que el ganador ha sido la hipótesis. 4) Multiplicar el número de tenemos (3)(P1_stack/ Remainingstack)la Equidad en el ganador en el 1er lugar.

He escrito un código de trabajo hasta ahora, pero sólo funciona si hay 3 pagado colocado. Me gustaría modificarlo para obtener más elegante y versátil forma de lograr equidad incluso si el pago lugares son más de 3.

Este es mi código: http://codepad.org/Q62l2wfv

Yo no soy un experto programador, pero tal vez de hacerlo con una llamada recursiva, debería ser más rápido y la equidad en 4º, 5º, 6º lugar se puede calcular sin dificultad.

4voto

theog Puntos 585

Bueno, vamos a representar las pilas por un (a) vector de $s = [s_1, s_2, \ldots, s_n]$, y el capital por un (desconocido) $n\times n$ matriz $$E = \begin{bmatrix} e_{11} & e_{12} & \ldots & e_{1n} \\ e_{21} & e_{22} & \ldots & e_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ e_{n1} & e_{n2} & \ldots & e_{nn} \end{bmatrix}$$ representa la probabilidad de que el jugador $i$ obtiene el lugar $j$. Esta matriz es una función de $s$, vamos a decir $E = f(s)$. Tenga en cuenta que estoy llenando todos los $n$ lugares; si tiene menos, simplemente ignore la tarde columnas.

Supongamos que el jugador $i$ fueron para llegar en primer lugar. Si esto sucede, se le quita el juego, encontrar los lugares de los otros jugadores y, a continuación, mayús todos ellos por uno para poner el reproductor de $i$ en el 1er lugar. Así:

  • Retirar el reproductor $i$ de las pilas, dando a $s\setminus s_i = [s_1, s_2 \ldots, s_{i-1}, s_{i+1}, \ldots, s_n]$.
  • Hacer una llamada recursiva en $s\setminus s_i$, dando lugar a la matriz de $E'_i = f(s\setminus s_i)$ lo que representa el patrimonio de todos los demás, si el jugador $i$ no existe.
  • $E'_i$ $(n-1)\times(n-1)$ matriz. Agregar una columna de ceros al principio (todo el mundo tiene probabilidad cero de ser en primer lugar), y se inserta una fila $[1, 0, \ldots, 0]$ a $i$th posición (el único lugar en el reproductor $i$ puede tener es el primero). Esta nueva $n\times n$ matriz es la capital de todos los jugadores, con la condición de jugador $i$ obteniendo el primer lugar. Llamar a esta matriz $E_i$.

Por supuesto, reproductor de $i$ sólo obtiene el primer lugar con una probabilidad de $$p_i = \frac{s_i}{\sum s_j}.$$ Por lo que el valor real de $E$, teniendo en cuenta todos los jugadores de probabilidad de ganar, es simplemente $$E = \sum p_i E_i.$$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X