Saltar al foro
Avisos
Vaciar todo

[Cerrado] ¿Quieres ganar 50$?

59 Mensajes
14 Usuarios
0 Reacciones
3,262 Visualizaciones

Sin desmerecer a nadie, fijate que el algoritmo que te presento tiene un razonamiento atrás que no tiene el otro...
Me cuesta encontrar un error, por lo que creo que el algoritmo está bien.
Me gustaría saber cómo están implementadas las funciones de equity, probabilidad y probabilidad ajustada. Puede que ahí esté el error.
Principalmente la de equity, ya que en equity tienes al menos dos valores, posibilidad de ganar y de empatar, y no sé como los manejas...
La otra opción es que me des un día para que yo programe mis propios algoritmos, pero me tendrías que asegurar un día de gracia para conseguir los resultados, pues hacer un trabajo tan grande para que no me pagen ya no es una opción para mí, je.
Me da lástima porque pienso que lo hice bien... saludos


DyLaK Autor del tema
DyLaK
Registrado: 29.12.2007
Elite Grinder

original de hipoKi
Sin desmerecer a nadie, fijate que el algoritmo que te presento tiene un razonamiento atrás que no tiene el otro...
Me cuesta encontrar un error, por lo que creo que el algoritmo está bien.
Me gustaría saber cómo están implementadas las funciones de equity, probabilidad y probabilidad ajustada. Puede que ahí esté el error.
Principalmente la de equity, ya que en equity tienes al menos dos valores, posibilidad de ganar y de empatar, y no sé como los manejas...
La otra opción es que me des un día para que yo programe mis propios algoritmos, pero me tendrías que asegurar un día de gracia para conseguir los resultados, pues hacer un trabajo tan grande para que no me pagen ya no es una opción para mí, je.
Me da lástima porque pienso que lo hice bien... saludos

La de equity es una función tan simple que es imposible que esté mal, te explico:

He almacenado los valores que da el equilator en un fichero, y esa función busca las manos que metes en el fichero y te lo devuelve tal cual. De hecho he probado AA vs AA y AA vs KK y da correcto.

La de probabilidad (Porcentaje) es casi más simple aun:
Si la mano es suited -> 4/1326
Si es pareja -> 6/1326
Si es offsuited -> 12/1326

Y la de probabilidad ajustada (PorcentajeDadaOtraMano) ya es un poco más complicada, pero ha sido probada con varias combinaciones de manos, y particularmente para las combinaciones AA, KK funciona perfectamente, contrastada con 100 millones de muestras.

Ok, te doy ese día. Aunque alguien me lo resuelva antes si tu me lo resuelves te doy igualmente 50$ (o 60$ si está en el lenguaje de tu calculadora :))

De todas formas te voy a dar esos datos para que pruebes con un rango:

AA,A2s vs AA,A2s

Prob AA = 6/1326
Prob A2s = 4/1326

Eq (AA vs A2s) = 87,893%

Probabilidad AA dada A2s = 3/50*2/49
Probabilidad A2s dada AA = 2/1225

Espero que te sirva


Okei muchas gracias!
Como mucho mañana a esta hora tenés resultados...
Ah! No programo con calculadora, programo con java, c++, C, o a lo sumo Modula-2 que puede llamarse calculadora jeje
Saludos y nos vemos en menos de 24 horas


DyLaK Autor del tema
DyLaK
Registrado: 29.12.2007
Elite Grinder

original de hipoKi
Okei muchas gracias!
Como mucho mañana a esta hora tenés resultados...
Ah! No programo con calculadora, programo con java, c++, C, o a lo sumo Modula-2 que puede llamarse calculadora jeje
Saludos y nos vemos en menos de 24 horas

Vale, te había confundido con Naharro xD


DyLaK Autor del tema
DyLaK
Registrado: 29.12.2007
Elite Grinder

En general creo que hay algo mal en todos los razonamientos, y es que tratamos de manera distinta al rango 1 que al rango 2. Es decir, hacemos uso de la función probabilidadDadaOtraMano, usando como mano que ya tenemos la mano del jugador 1, cuando esto no es así.


Galo7070
Registrado: 28.12.2007
PokerStrategist

Sólo voy a decir una cosa:

Lograste arruinarme la semana!!!!

.


DyLaK Autor del tema
DyLaK
Registrado: 29.12.2007
Elite Grinder

original de Galo7070
Sólo voy a decir una cosa:

Lograste arruinarme la semana!!!!

.

xD sorry, ojalá arruinarte esta semana sirva para que puedas ganar mucho más en las mesas si llegas a solucionarlo...

Si te sirve de consuelo yo llevo así un mes.


DyLaK Autor del tema
DyLaK
Registrado: 29.12.2007
Elite Grinder

Bueno, reabro el "concurso" oficialmente, puesto que la solución de galo tenía algún fallo (estamos trabajando en ello...).

Así que cualquiera que de con la solución recibirá los 50$.

En cualquier caso, al menos a ti galo te pasaré el programa en cuanto lo termine.


K9M2
Registrado: 18.09.2008
Oldschool Grinder

no eran 60?? no se le agregaba 10 si era un codigo?
Frikis !


Chaman2281
Registrado: 12.08.2008
PokerStrategist

Ya hay un programa que hace esto, pertenece a un paquete de soft gratuito para gente con cuenta en stoxpoker, no se si se puede conseguir a través de Cardrunners. Hace estos cálculos para cada una de las clles y además aconseja la acción a tomar. Está pensado para fixed limit pero sirve perfectamente para NL cambiando unos parámetros.


DyLaK Autor del tema
DyLaK
Registrado: 29.12.2007
Elite Grinder

original de Chaman2281
Ya hay un programa que hace esto, pertenece a un paquete de soft gratuito para gente con cuenta en stoxpoker, no se si se puede conseguir a través de Cardrunners. Hace estos cálculos para cada una de las clles y además aconseja la acción a tomar. Está pensado para fixed limit pero sirve perfectamente para NL cambiando unos parámetros.

Si cumple lo que pongo en el primer post, te ganas 50$, así que lo tienes fácil.


DyLaK Autor del tema
DyLaK
Registrado: 29.12.2007
Elite Grinder

original de K9M2
no eran 60?? no se le agregaba 10 si era un codigo?
Frikis !

Sí, 60$ si es en código o pseudocódigo


Señor!
El problema lleva más tiempo del que pensé, por lo que para mañana no lo voy a tener listo, y no sé de qué tiempo dispondré en el futuro...
Eventualmente volveré a ver como sigue la cosa... tal vez con una solución...
Saludos!


DyLaK Autor del tema
DyLaK
Registrado: 29.12.2007
Elite Grinder

original de hipoKi
Señor!
El problema lleva más tiempo del que pensé, por lo que para mañana no lo voy a tener listo, y no sé de qué tiempo dispondré en el futuro...
Eventualmente volveré a ver como sigue la cosa... tal vez con una solución...
Saludos!

No se, como comprenderás no te puedo prometer los 50$ eternamente... lo más que puedo hacer si lo intentas y lo consigue alguien antes que tu es pasarte el programa cuando lo termine.


no problem! por eso te avisaba... hasta luego!


Ayer estube todo el puto dia entre la facultad, el hospital y distintos pubs irlandeses asi que no pude echarle un ojo al tema. Yo haciendolo a mano con mi mierda codigo funcionaba siempre q no hubiera "cartas encontradas" entre los rangos.

Una cosa que no me pare a explciar es que cuando pongo Probabilidad de la mano B no es la probabilidad en egneral de que salga la mano B sino la posibildiad de que salga dicha mano dentro del rango B. Si una mano no influyera sobre la otra seria probabilidad de quesalga la mano (en general) / sumatorio de las probabilidades de cada mano del rango


Voy a poner un ejemplo de como yo lo entiendo que creo que es lo mas sencillo. AA, KK vs JJ+ AK

resumiendo:

probA: probabilidad de manoA dentro del rango A. "dentro de su rango"=probabilidad de dicha mano / sumatorio de las probabilidades de las manos del rango.
ProbB: probabilida de la mano B dentro de su rango DEPENDIENDO de la mano A

ΣAi probA*(ΣBi ProbB*(equitys Ai vs Bi))


De todas formas estoy seguro al 100% que en las librerias esas q te dije hay un programa ejemplo que hace exactamente lo que andas buscando y de codigo abierto obviamente.

Edito. ahora que lo pienso mas de un segundo funcionaba a base de iteraciones


DylLaK has probado a modificar el codigo como te dije?
El codigo seria el que tu posteate pero modficando las funciones de probabilidad como te pongo arriba:

original de DyLaK
...

foreach (Mano1 in this.Manos)
{ P += mano1.Porcentaje }

Este es el código traducido, espero que lo entiendas:

public double equityVsRango2(Rango rango)
{
double f=0;

foreach (Mano mano1 in this.Manos)
{
foreach (Mano mano2 in rango.Manos)
Q += mano2.PorcentajeDadaOtraMano(mano1)
}

{
double e=0;
foreach (Mano mano2 in rango.Manos){
e += mano1.EquityVsMano(mano2) * mano2.PorcentajeDadaOtraMano(mano1)/Q;
}

f += e * mano1.Porcentaje/P;
}

return f;
}

El resultado de AA,KK vs AA,KK = 0.003% vs ...

Se me ha descuadrao cuando he peusto la negrita y ademas faltaran cosas formalesy eso pero creo que el mensaje se entiende. A ver i lo pruebas q tengo ganas de mirar si es asi o me fall la intuición