9 votos

de dos pisos, de 13 de tarjeta de ras vs 18+ de cada color de la tarjeta. Quién tiene las mejores probabilidades de ganar?

Dos personas, llamarlos $A$$B$, deciden jugar a un juego de cartas. Se toman 2 barajas de cartas y combinarlos en un "superdeck" de 104 cartas, barajar bien, y luego roba 1 carta en un momento al azar sin reemplazo. $A$ gana inmediatamente si 13 cartas de un solo palo están dibujados. $B$ gana inmediatamente si al menos 18 negro y al menos 18 tarjetas rojas son dibujados. Si ambos "ganar" en el mismo card draw es un lazo (no se toma ninguna decisión) y empezar de nuevo con todos los 104 cartas después de la reorganización. Se apuesta dinero-por cada dólar que la coincidencia. ¿Quién, si alguien, tiene la ventaja de ganar y por cuánto?

Tenga en cuenta que todas las cartas son compartidos cartas "comunitarias", así que los jugadores no son de dibujar su propio conjunto de tarjetas.

Si alguien desea comentar sobre si y cómo la probabilidad de cambios si ellos sacan sus cartas en tándem, que sería muy interesante e informativo. Por ejemplo, dos cartas serían atraídos a la vez, dar a $A$ y un a $B$, y, a continuación, comprueba si alguien gana o si se atadas. Este es un bono opcional pregunta y no se requieren para obtener la marca de verificación para la mejor respuesta.

La simulación de 1,000,000,000 (1 millones) decisiones (incluyendo lazos) de la pregunta original (cartas compartidas), tengo los siguientes porcentajes de victorias: $$ Un\quad 38.7855918\%\\ B\quad 59.7770491\%\\ \textrm{Empate}\quad 1.4373591\% $$

Nº mínimo de tarjetas : $14$ (Una decepción como me lo esperaba para ser $13$)
Nº máximo de tarjetas : $42$
Promedio # de tarjetas : $37.1902$

Tenga en cuenta que en el "primer vistazo", algunas personas podrían pensar que la $A$ tiene la ventaja debido a $A$ puede ganar con tan solo 13 cartas pero B necesidades de 36 cartas al mínimo para ganar. Sin embargo, fíjese cuánto $B$ es en realidad el favorito a ganar. Otra cosa que algo que me sorprendió es el promedio del número de tarjetas para que alguien gane (o lazo) es de alrededor de 37, sólo 1 tarjeta de más de $B$'s mínimo necesario para ganar. Que también podría implicar que $A$ tiene una ventaja. Lo que si me ha reformulado la pregunta que cabe también indicar que el promedio de número de tarjetas para una decisión poco mas de 37, la mayoría de las personas, a continuación, pensar a primera vista que $A$ tiene una ventaja, posiblemente una enorme? Sin embargo, otra cosa que podría inducir a error a las personas a pensar que $A$ tiene una gran ventaja es que $A$ es garantía de que no se pierde si al menos 42 cartas son dibujados. En ese momento, $A$ ha ganado o empatado. Felicitaciones a la persona que se sospecha que $B$ era el favorito desde el principio, porque a él no permitas que estos falsos prejuicios de oscilación de él hacia la $A$ siendo el favorito.

ACTUALIZACIÓN:

Me encontré con la alternativa de simulación, dando a cada jugador sus propias tarjetas y obtuvo algunos resultados interesantes. $B$ sigue siendo el favorito en torno $57.1\%$ $A$'s $36.8\%$ lo que significa que los lazos más que cuadruplicado a cerca de $6.1\%$. El promedio de número de tarjetas de algo más que duplicado, pasando de alrededor de 37 a alrededor del 75 con un mínimo de 28 y un máximo de 94 (diez millones de decisiones).

Quizás una manera de simplificar la obtención de la respuesta a este problema original es iniciar el juego inmediatamente giro de más de 35 cartas desde $B$ no puede ganar con menos de 36 cartas. Compruebe si $A$ ganó a 35 tarjetas. Si no, a continuación, dibuje las tarjetas de 36 a 42, de una en una comprobación de un ganador. Por sorteo 42 a alguien le ha ganado o hay un empate. Por lo que la prob de $A$ ganar en un 35 card draw ser: $$ \grande \frac{4\times {26 \elegir 13} \times {78 \elige 22}}{{104 \elegir 35}} $$

Que es acerca de $10\%$. Puede ser de dos 13 tarjetas de rubores en eso, pero no nos importa mientras haya al menos 1.

También es interesante notar que en el juego original con cartas compartidas, $42$ tarjetas es el máximo para un triunfo o un empate debido a la $25+17$ situación, pero con las manos separadas, que no suceda así el máximo número de cartas sacadas puede exceder $84$ (que es $2$ * $42$) y en mi simulación se hizo superar como maxxed en $94$ tarjetas, no $84$. Por ejemplo, B podría conseguir a $29$ tarjetas negras y $17$ tarjetas rojas pero podría tener $12, 12, 11,$ $11$ de cada palo (respectivamente) por lo que en ese momento, ni es un ganador y $2$ más tarjetas elaborado (casi agotar la cubierta de $104$). El número máximo de cartas que alguna vez se ha separado de la tarjeta de variación de este juego parece como $94$ pero no estoy seguro aún.

Otro punto interesante es que la simulación de la tarjeta separada variación es considerablemente más lento debido a que el promedio aproximado del número de tarjetas que se necesita es de aproximadamente el doble ($75$ vs $37$) y se puede ir tan alto como $94$, que es casi toda la cubierta, por lo que se hace "más difícil" (la más lenta).

6voto

mjqxxxx Puntos 22955

El código Python a continuación simula los partidos con o sin reemplazo. Basado en un millón de partidos con la sustitución, el jugador a gana $56.8 \pm 0.1 \%$ del tiempo (y los lazos que se producen sobre las $2\%$ del tiempo), en consonancia con los dos respuestas. Basado en un millón de partidos sin reemplazo, por otro lado-que es el OP pregunta -- el jugador B gana $59.8 \pm 0.1 \%$ del tiempo (y los lazos que se producen sobre las $1\%$ del tiempo). Así que el dibujo sin reemplazo duele Un jugador suficiente para lanzar la ventaja con respecto al jugador B.

Para ver por qué esto podría ser cierto, tenga en cuenta que el jugador a las necesidades de la mitad de las cartas de algunos de traje, mientras que el jugador B debe alrededor de un tercio de las cartas de ambos colores... así que si las extracciones son incluso a través de trajes, Un jugador necesita ver $1/2$ de la cubierta, mientras que el jugador B solo necesita ver a $1/3$. Dibujo sin reemplazo es "auto-corrección", y tiende a mantener el número de cartas al azar de diferentes palos más juntos (dando el borde de B). Dibujo con el reemplazo no es, lo que permite un juego más fácilmente paseo aleatorio en una gran ventaja (dando el borde de Una).


import random

rng = random.Random()

def getShuffledDeck(m, n, x):
  deck = []
  for i in xrange(m):
    for j in xrange(n * x):
      deck.append((i, j%n))
  rng.shuffle(deck)
  return deck

def playGame(repl=False, m=13, n=4, x=2, aa=13, bb=18):
  deck = getShuffledDeck(m, n, x)
  suitCts = [0 for suit in xrange(n)]
  colorCts = [0, 0]
  pos = -1
  while True:
    if repl: pos = rng.randrange(0, len(deck))
    else: pos += 1
    (rank, suit) = deck[pos]
    suitCts[suit] += 1
    colorCts[suit % 2] += 1
    awin = (max(suitCts) >= aa)
    bwin = (min(colorCts) >= bb)
    if (awin or bwin): return (awin, bwin)
  return (False, False)

def playGames(num, repl=False):
  ret = {}
  for i in xrange(num):
    win = playGame(repl)
    ret[win] = ret.get(win, 0) + 1
  return ret

4voto

Thomas Puntos 31

Set $T_A, \ T_B$ los tiempos de parada de llegar el ganador de la secuencia de a y B. Estamos interesados en $T_A=T_B,\ T_A<T_B,\ T_A>T_B$. Set $K(i) =$"el traje de la i-ésima de la tarjeta" e $X(i)=(X_1(i),...,X_4(i))=$"el número de tarjetas de los cuatro palos hasta la i-ésima extracción".

Así que, después de un poco de jugar con los eventos, conseguimos $P(T_A=T_B)=4 \sum_{i=1}^N P(T_A=T_B,\ K(T_A)=1,\ X(T_A-1) = x_n)$.

Un poco de comprensión de la fórmula. La variable $K(T_A)$ es el palo de la carta que hace Un cierre de la secuencia que está buscando. Puede ser cada uno de los cuatro palos, por lo $K(T_A) = 1, 2,3,4$. Por lo $P(T_A=T_B)=P(T_A=T_B \ \bigcap \ (\cup_{i=1}^4 K(T_A)=i))=4\ P(T_A=T_B \ \bigcap \ K(T_A)=1)$.

Este paso básicamente dice que, desde las cuatro de la suite son intercambiables, se puede reducir la complejidad, por la fijación de la suite de la última carta y se multiplica por 4 (como la probabilidad de que la extracción va a terminar con 1 es el mismo que va a terminar con 2, 3 o 4).

La variable $X(T_A-1)$ representa los números de tarjetas de extracto, para cada conjunto (es una de las 4 dimensiones de la variable), antes de la última extracción. Esta variable se asume un número finito de 4-tupla (que me enumerados de 1 a N). Aplicando la misma regla como antes, obtenemos la fórmula de arriba.

Un ejemplo podría explicar mejor. Teniendo en cuenta la situación en que podemos extraer de 12 tarjetas de traje de 1, 5 tarjetas de traje de 2, 9 cartas de traje de 3 y 9 cartas de palo. A continuación, extraemos la siguiente tarjeta y es un 1. En este ejemplo, he considerado a $x=(12,5,9,9)$. Tenga en cuenta también que no es relevante el orden en que los primeros 35 tarjetas se han producido.

El punto aquí es: ¿cuáles son todas las 4-tupla que son compatibles con: "el juego termina con un empate" y "la última carta es de 1"? Ellos satisfacen las condiciones:

$x_1 = 12 ,\ x_2=5,\ x_3+x_4 \geq 18,\ x_3,x_4 \leq 12$.

Para el caso de $T_A<T_B,\ K(T_A)=1,\ X(T_A-1) = x_n$

el admisibles $x_n$ son los que: $x_1=12,\ x_2\leq12,\ x_3\leq12,\ x_4\leq12$ , de modo que Una no ha ganado todavía y va a ganar con el siguiente 1. También B no haber ganado todavía y no ha de ganar con la siguiente (1). Esta traducir (en conjunción con el anterior): $x_1+x_2<17 \text{ or } x_3+x_4<18$.

Finalmente,$T_A>T_B,\ K(T_B)=1,\ X(T_B-1) = x_n$. En este caso no ha de ganar: $x_1<12, \ x_2\leq12,\ x_3\leq12,\ x_4\leq12$ y B tiene que ganar en el próximo 1 de significado: $x_1+x_2=17, x_3+x_4 \geq 18$.

Ahora, dados cualesquiera $x_n=x$, todas esas probabilidades son iguales:

$$\frac{\binom{26}{x_1}\binom{26}{x_2}\binom{26}{x_3}\binom{26}{x_4}}{\binom{104}{\text{sum }x}} \frac{26-x_1}{104- \text{sum }x}.$$

Así que, dados los números son lo suficientemente pequeños, escribí la siguiente R-código para calcular estas probabilidades:

f <- function(x){
choose(26,x[1])*choose(26,x[2])*choose(26,x[3])*choose(26,x[4]) /                
choose(104,sum(x)) * (26-x[1])/(104-sum(x))}

x <- 0:12
X <- expand.grid(x,x,x,x)

XTie <- X[ ((X[,1]==12) & (X[,2]==5) & (X[,3]+X[,4]>=18)),]
XA   <- X[ ((X[,1]==12) & ((X[,1]+X[,2]<17) | (X[,3]+X[,4]<18))),] 
XB   <- X[ ((X[,1] <12) & (X[,1]+X[,2]==17) & (X[,3]+X[,4]>=18)),]

pTie <- sum(apply(XTie,1,f)) * 4
pA   <- sum(apply(XA  ,1,f)) * 4
pB   <- sum(apply(XB  ,1,f)) * 4

pTie*100; pA*100; pB*100
[1] 1.441632
[1] 38.78894
[1] 59.76943
pTie + pA + pB
[1] 1

En este caso la suma de la probabilidad es 1 si los números están redondeados a 15 dígitos.

He visto que han actualizar el juego. Cuando voy a tener una oportunidad voy a echar un vistazo.

He hecho algunas modificaciones para mejorar la respuesta. Espero que sea lo suficientemente clara.

3voto

Shabaz Puntos 403

Me encontré con una Pitón de simulación para un infinito cubierta, que es el mismo que si las extracciones son con reemplazo. De $10,000$ juegos conseguí $5728$ de victorias para Un, $4069$ victorias para la B, y $203$ lazos, cerca de David cálculo. He verificado uno de los juegos que cuentan las tarjetas individuales correctamente y veinte juegos contó el ganador basándose en la tarjeta de cuenta. Una ligera victoria para A. Aquí es el código si lo que te interesa. plev es sólo el diagnóstico de nivel de impresión.

import random  
def game(plev=0):  
    counta=[0,0,0,0] #count of cards in each suit#  
    countb=[0,0] #count of black and red#  
    awin=False  
    bwin=False  
    while True:  
        i=random.randint(0,3) #pick a suit#  
        counta[i]+=1 #add 1 to the proper suit#  
        countb[i/2]+=1 #add 1 to the proper color#  
        if max(counta)==13: awin=True  
        if min(countb)==18: bwin=True  
        if plev > 19:  
            print i, counta, countb, awin, bwin  
        if awin and not bwin: #a has wone and b has not#  
            if plev > 9: print counta, countb, awin, bwin  
            return 'a'  
        if bwin and not awin: #b has won and a has not#  
            if plev > 9: print counta, countb, awin, bwin  
            return 'b'  
        if awin and bwin: #it is a tie#  
            if plev > 9: print counta, countb, awin, bwin  
            return 'tie'  
def match(games,plev=0):  
    awins=0  
    bwins=0  
    ties=0  
    for i in range (games):  
        result=game(plev)  
        if result=='a': awins+=1  
        if result=='b': bwins+=1  
        if result=='tie': ties+=1  
    print awins, bwins, ties  

2voto

Mike Puntos 1113

Mientras que esto es sólo heurística, podemos obtener una interesante primera toma teniendo en cuenta la cantidad de cartas de los 'grandes' de color B se tienen a la hora de cumplir en primer lugar con la condición de victoria. Tratamos a la red vs tarjetas negras como jefes vs colas coin flips (es decir, la simplificación de dibujar con reemplazo); a continuación, después de $N$ 'tirones' el número esperado de tarjetas rojas es $\frac12N$ y la varianza es $\sigma^2=\frac14N$ ( $\sigma=\frac12\sqrt{N}$ ). La siguiente aproximación es considerar que esto es aproximadamente normal, y utilizar los resultados sobre la Media de la distribución normal para calcular el valor esperado de min(rojo, negro) es (desde min(rojo,negro) y max(rojo,negro) son simétricas). Dado que la expectativa de una media normal de la variable aleatoria es $E=\frac{\sigma\sqrt{2}}{\sqrt{\pi}}$, debemos figura en min(rojo,negro) siendo aproximadamente $\frac{N}{2}-\frac{\sqrt{N}}{\sqrt{2\pi}}\approx .5N-.4\sqrt{N}$. La configuración de este igual a 18 y resolver sugiere $N\approx 41$; en otras palabras, cuando B recibe 18 de sus 'mínimo' de color que van a tener (en promedio) de aproximadamente 23 de sus 'máximo' de color. Entonces no debe haber más de 13 cartas en cualquier individuo de la pila, o bien Una ya ha ganado; se puede usar una aproximación normal a la binomial de nuevo para calcular estas probabilidades. Para $N=18$, $\sigma=\frac32\sqrt{2}\approx2.12$; esto significa que $A$ gana en el 'pequeño' lado si el resultado es mayor de aproximadamente 1.9 desviaciones estándar de la norma; la probabilidad de que este es (muy aproximadamente) 5%. Asimismo, en la $N=23$ 'lado', $\sigma \approx 2.4$, por lo que el extremal resultado es aproximadamente .625 SDs de la media; la probabilidad de ganar en este "lado" es alrededor de un 53%.

Combinados, estos sugieren que, posiblemente, tiene un pequeño borde, pero por supuesto, la falta de reemplazo arroja una llave en el trabajo; en general, las probabilidades son muy parejos.

2voto

Jonny Puntos 1970

De 13 a 35 cartas, el jugador a tiene una probabilidad de ganar, mientras que el jugador B no. De 36 a 48 cartas, ambos jugadores tienen una oportunidad de ganar o de lazo. En el 49º de la tarjeta, el jugador a gana seguro (frente a los 42 que la demanda). Esto es debido a que el principio del palomar: 48 mano de la tarjeta podría incluir 12 de cada palo, por lo que el número 49 de la tarjeta debe hacer un traje recuento de 13. En el año 70 de la tarjeta, el jugador B gana seguro (B podría haber 52 de un color, y 17 de la otra. El 70 dibujar garantiza el 18 de cada uno). Finalmente, como los datos de la muestra, una mano de tamaño 42 garantiza que sea a o B se gana (o empate).

Para calcular la probabilidad de que Una no ha ganado en algún punto a a $H$ sorteos, podemos pensar en una mano como un recuento de cuántos de cada palo. Si dejamos $h,c,d,s$ representan el recuento de cada palo en la mano, entonces el número de manos con los que cuentan, es $\binom{26}{h} * \binom{26}{c} * \binom{26}{d} * \binom{26}{s}$. El número total de manos sería la suma de esta expresión para todos los $h,c,d,s <=26$ tal que $h+c+d+s = H$, que es igual a $\binom{104}{H}$. El número total de manos donde no gana es la misma fórmula restringida a $h,c,d,s < 13$. Luego restamos este del total para obtener el número de manos ganadoras.

Lo mismo para B, podemos pensar en una mano como la distribución de rojo y negro tarjetas, pero con sólo dos variables de $r,b$ y 52 de cada uno a elegir entre: ie $\binom{52}{r} * \binom{52}{b}$. Queremos suma de todos estos valores que $r,b \ge 18$$r+b = H$.

Puesto que a y B comparten las manos, también tenemos que contar el número de la superposición de los no ganadores de las manos. Para ello, se utiliza la misma fórmula que para notA, pero con la restricción adicional de que $h+d < 18$$c+s < 18$. También puede contar el número de la superposición de las manos ganadoras mediante la negación de nuestras limitaciones.

Tenga en cuenta que estos resultados significan que la probabilidad de que el evento ocurrió en algún punto hasta la mano de H. La probabilidad de que el jugador a gana exactamente de la mano de H es igual a la probabilidad condicional de que no ha ganado en la mano $H-1$, Un jugador ganó en la mano $H$, y los dos no ganar en la mano $H$. La probabilidad de que un empate es igual a la probabilidad condicional de que ni ganó en la mano $H-1$, pero ambos ganaron en la mano $H$.

Hand size: 35
A winning hands:    875816935792799067913677520
B winning hands:    0
AB both win:    0
AB do not win:  5824466077910326344645212520
Total hands:    5824466077910326344645212520
Probability A wins: 0.15036862
Probability B wins: 0
Probability both win: 0
Probability neither wins: 1

Hand size: 36
A winning hands:    2187651178880365105675308580
B winning hands:    1820897651953170094890722500
AB both win:    142265392956675598133160000
AB do not win:  7297276544784599224803786250
Total hands:    11163559982661458827236657330
Probability A wins: 0.19596358
Probability B wins: 0.16311084
Probability both win: 0.01274373
Probability neither wins: 0.65366931

Hand size: 37
A winning hands:    5140562828655596541853267120
B winning hands:    6516896859621871918556270000
AB both win:    777662543946706376569520000
AB do not win:  9637015796776783868919245000
Total hands:    20516812941107545952759262120
Probability A wins: 0.25055367
Probability B wins: 0.31763690
Probability both win: 0.03790367
Probability neither wins: 0.46971310

Hand size: 38
A winning hands:    11371534640110716298280913080
B winning hands:    16583787534879868803273455500
AB both win:    2937240057516237287701068000
AB do not win:  11156298594478430576538030000
Total hands:    36174380711952778390391330580
Probability A wins: 0.31435326
Probability B wins: 0.45844012
Probability both win: 0.08119669
Probability neither wins: 0.30840331

Hand size: 39
A winning hands:    23690714827333517325560337520
B winning hands:    35627336140083180992347849000
AB both win:    9013637288502121383132024000
AB do not win:  10913769064390124956655320000
Total hands:    61218182743304701891431482520
Probability A wins: 0.38698821
Probability B wins: 0.58197311
Probability both win: 0.14723791
Probability neither wins: 0.17827659

Hand size: 40
A winning hands:    46487893830302959963647058470
B winning hands:    68284216792403753485577822225
AB both win:    23655062504574195829192021600
AB do not win:  8362498839737622953543300000
Total hands:    99479546957870140573576159095
Probability A wins: 0.46731107
Probability B wins: 0.68641463
Probability both win: 0.23778820
Probability neither wins: 0.08406249

Hand size: 41
A winning hands:    85910617153854265768625366880
B winning hands:    119811369879258352469125806400
AB both win:    54462253713125886387171266400
AB do not win:  4025413150834950995978000000
Total hands:    155285146470821682846557906880
Probability A wins: 0.55324427
Probability B wins: 0.77155718
Probability both win: 0.35072417
Probability neither wins: 0.02592272

Hand size: 42
A winning hands:    149469721837112574467943550320
B winning hands:    195312503647991511458210679600
AB both win:    111854505778871561656317369600
AB do not win:  0
Total hands:    232927719706232524269836860320
Probability A wins: 0.64170002
Probability B wins: 0.83851121
Probability both win: 0.48021123
Probability neither wins: 0

Hand size: 43
A winning hands:    244715045843780655787896274880
B winning hands:    298674073002244768818180828000
AB both win:    207539848571922715193754188000
AB do not win:  0
Total hands:    335849270274102709412322914880
Probability A wins: 0.72864546
Probability B wins: 0.88930988
Probability both win: 0.61795534
Probability neither wins: 0

Hand size: 44
A winning hands:    376860795714204834746281144720
B winning hands:    431385093907717298743442357400
AB both win:    342636674014643377259003097400
AB do not win:  0
Total hands:    465609215607278756230720404720
Probability A wins: 0.80939291
Probability B wins: 0.92649604
Probability both win: 0.73588894
Probability neither wins: 0

Hand size: 45
A winning hands:    545804079983805943178849072960
B winning hands:    591482567719646428297316775840
AB both win:    516474360227080696501871975840
AB do not win:  0
Total hands:    620812287476371674974293872960
Probability A wins: 0.87917731
Probability B wins: 0.95275590
Probability both win: 0.83193321
Probability neither wins: 0

Hand size: 46
A winning hands:    743714191719739507973917271840
B winning hands:    772880007527858837939817663360
AB both win:    720334960962686849751053663360
AB do not win:  0
Total hands:    796259238284911496162681271840
Probability A wins: 0.93401013
Probability B wins: 0.97063867
Probability both win: 0.90464880
Probability neither wins: 0

Hand size: 47
A winning hands:    954779348149106412259124973760
B winning hands:    965300355892586485716310679040
AB both win:    937461920626270200583190679040
AB do not win:  0
Total hands:    982617783415422697392244973760
Probability A wins: 0.97166911
Probability B wins: 0.98237623
Probability both win: 0.95404534
Probability neither wins: 0

Hand size: 48
A winning hands:    1158159106785090614049190906340
B winning hands:    1154952335593086938765629404360
AB both win:    1146252824572363099661529404360
AB do not win:  0
Total hands:    1166858617805814453153290906340
Probability A wins: 0.99254450
Probability B wins: 0.98979629
Probability both win: 0.98234080
Probability neither wins: 0

Hand size: 49
A winning hands:    1333552706063787946460903892960
B winning hands:    1325964631130082475276750299840
AB both win:    1325964631130082475276750299840
AB do not win:  0
Total hands:    1333552706063787946460903892960
Probability A wins: 1.00000000
Probability B wins: 0.99430988
Probability both win: 0.99430988
Probability neither wins: 0

Y aquí está el código:

import java.math.BigDecimal;
import java.math.BigInteger;


public class A {

    public static void main(String[] args) {

        for(int H=35; H<50; H++) {

            BigInteger AWIN = BigInteger.ZERO;
            for(int A=0; A<13; A++) {
                for(int B=0; B<13; B++)
                    for (int C=0; C<13; C++)
                        for (int D=0; D<13; D++)
                            if(A+B+C+D == H) {
                                BigInteger temp = BigInteger.ONE;
                                temp = temp.multiply((choose(26,A)));
                                temp = temp.multiply((choose(26,B)));
                                temp = temp.multiply((choose(26,C)));
                                temp = temp.multiply((choose(26,D)));
                                AWIN = AWIN.add(temp);
                            }
            }

            BigInteger BWIN = BigInteger.ZERO;
            if(H>35) {
                for(int R=18; R<H; R++) {
                    for(int B=18; B<H; B++)
                        if(R+B == H) {
                            BigInteger temp = BigInteger.ONE;
                            temp = temp.multiply((choose(52,R)));
                            temp = temp.multiply((choose(52,B)));
                            BWIN = BWIN.add(temp);
                        }
                }
            }

            BigInteger ABNOWIN = BigInteger.ZERO;
            if(H>35) {
                for(int A=0; A<13; A++) {
                    for(int B=0; B<13; B++)
                        for (int C=0; C<13; C++)
                            for (int D=0; D<13; D++)
                                if(A+B+C+D == H && (A+B < 18 || C+D < 18)) {
                                    BigInteger temp = BigInteger.ONE;
                                    temp = temp.multiply((choose(26,A)));
                                    temp = temp.multiply((choose(26,B)));
                                    temp = temp.multiply((choose(26,C)));
                                    temp = temp.multiply((choose(26,D)));
                                    ABNOWIN = ABNOWIN.add(temp);
                                }
                }
            }

            BigInteger ABWIN = BigInteger.ZERO;
            if(H>35) {
                for(int A=0; A<=26; A++) {
                    for(int B=0; B<=26; B++)
                        for (int C=0; C<=26; C++)
                            for (int D=0; D<=26; D++)
                                if(A+B+C+D == H && A+B >= 18 && C+D >= 18 && (A >= 13 || B >= 13 || C >= 13 || D >= 13)) {
                                    BigInteger temp = BigInteger.ONE;
                                    temp = temp.multiply((choose(26,A)));
                                    temp = temp.multiply((choose(26,B)));
                                    temp = temp.multiply((choose(26,C)));
                                    temp = temp.multiply((choose(26,D)));
                                    ABWIN = ABWIN.add(temp);
                                }
                }
            }

            BigInteger tot = BigInteger.ZERO;
            for(int A=0; A<=26; A++) {
                for(int B=0; B<=26; B++)
                    for (int C=0; C<=26; C++)
                        for (int D=0; D<=26; D++)
                            if(A+B+C+D == H) {
                                BigInteger temp = BigInteger.ONE;
                                temp = temp.multiply((choose(26,A)));
                                temp = temp.multiply((choose(26,B)));
                                temp = temp.multiply((choose(26,C)));
                                temp = temp.multiply((choose(26,D)));
                                tot = tot.add(temp);
                            }
            }

            AWIN = tot.subtract(AWIN);

            System.out.println("    Hand size: " + H);
            System.out.println("    A winning hands:\t" + AWIN.toString());
            System.out.println("    B winning hands:\t" + BWIN.toString());
            System.out.println("    AB both win:\t" + ABWIN.toString());
            System.out.println("    AB do not win:\t" + ABNOWIN.toString());
            System.out.println("    Total hands:\t" + tot.toString());

            BigDecimal topA = new BigDecimal(AWIN);
            BigDecimal topB = new BigDecimal(BWIN);
            BigDecimal topAB = new BigDecimal(ABWIN);
            BigDecimal topNAB = new BigDecimal(ABNOWIN);
            BigDecimal bot = new BigDecimal(tot);
            System.out.println("    Probability A wins: " + topA.divide(bot,8, BigDecimal.ROUND_HALF_UP).toString());
            System.out.println("    Probability B wins: " + topB.divide(bot,8, BigDecimal.ROUND_HALF_UP).toString());
            System.out.println("    Probability both win: " + topAB.divide(bot,8, BigDecimal.ROUND_HALF_UP).toString());
            System.out.println("    Probability neither wins: " + topNAB.divide(bot,8, BigDecimal.ROUND_HALF_UP).toString());
            System.out.println();

        }

    }

    static BigInteger choose(final int N, final int K) {
        BigInteger ret = BigInteger.ONE;
        for (int k = 0; k < K; k++) {
            ret = ret.multiply(BigInteger.valueOf(N-k))
                     .divide(BigInteger.valueOf(k+1));
        }
        return ret;
    }

}

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