Hola, la verdad estoy haciendo un juego de BlackJack y usando la estrategia básica: G*(mimano, crupier) = Max {G0 (mimano,crupier), Σ10 C=1 G*(x+c,b)} por si alguien le importa el tema.
La cosa es que tengo el código con la estadistica sobre la posibilidad de sacar BlackJack en cierta mano, Cuando doblar pedir, rendirse y todas esas cosas, pero en la parte donde tengo que mesclar las "cartas" siento que no funciona bien les dejo el la función que hice, es súper "bruta" si se puede llamar de esa manera
Mesclar(){
int numal;
int i;
srand(time(NULL));
for(i=0 ; i<10000 ; i++){
numal = 1 + rand() % (14 + 1) - 1;
if(ca+c2+c3+c4+c5+c6+c7+c8+c9+c10+cj+cq+ck == 312){
break;
}
if(numal == 1 && ca<24){
mazo[k] = 11;
crestantes[k] = 11;
k++;
ca++;
}
if(numal == 2 && c2<24){
mazo[k] = 2;
crestantes[k] = 2;
k++;
c2++;
}
if(numal == 3 && c3<24){
mazo[k] = 3;
crestantes[k] = 3;
k++;
c3++;
}
if(numal == 4 && c4<24){
mazo[k] = 4;
crestantes[k] = 4;
k++;
c4++;
}
if(numal == 5 && c5<24){
mazo[k] = 5;
crestantes[k] = 5;
k++;
c5++;
}
if(numal == 6 && c6<24){
mazo[k] = 6;
crestantes[k] = 6;
k++;
c6++;
}
if(numal == 7 && c7<24){
mazo[k] = 7;
crestantes[k] = 7;
k++;
c7++;
}
if(numal == 8 && c8 <24){
mazo[k] = 8;
crestantes[k] = 8;
k++;
c8++;
}
if(numal == 9 && c9<24){
mazo[k] = 9;
crestantes[k] = 9;
k++;
c9++;
}
if(numal == 10 && c10<24){
mazo[k] = 10;
crestantes[k] = 10;
k++;
c10++;
}
if(numal == 11 && cj<24){
mazo[k] = 10 ;
crestantes[k] = 10 ;
k++;
cj++;
}
if(numal == 12 && cq<24){
mazo[k] = 10 ;
crestantes[k] = 10 ;
k++;
cq++;
}
if(numal == 13 && ck<24){
mazo[k] = 10;
crestantes[k] = 10;
k++;
ck++;
}
if(ca+c2+c3+c4+c5+c6+c7+c8+c9+c10+cj+cq+ck == 312){
break;
}
}
i=0;
for(int j=0 ; j<=6 ; j++){
for(int h=0 ; h<=52 ; h++){
printf("%2i ", mazo[i]);
i++;
}
printf("\n");
}
}
Se que pedir código es de mal gusto pero me la e pensado mucho y no se me ocurre como hacerlo pero si alguien me puede ayudar con alguna idea de como hacerlo o con el código lo amaría. Gracias de antemano.
Hola Frijolito (https://underc0de.org/foro/profile/Frijolito/),
Si quieres armar algo así, no podrías usar el Minimax, por la naturaleza estocástica del juego. Sin embargo, no sé si alguna vez escuchaste de Expectimax, la cual es una variante y se desarrolló especificamente para estos casos. Sé que Expectimax te servirá, pero debes indagar en cómo implementarlo en tu algoritmo.
Puedes ver proyectos en GitHub de este, aquí: Expectimax - Examples. (https://github.com/topics/expectimax)
Un saludo.