Sto problema mi intrippa matematicamente,
sono riuscito a trovare una formuletta per il calcolo della posizione n-esima che dovrebbe essere data da:
n = fib(a+1)-fib(b-1)-fib(c-1)
dove a è il risultato più alto, b l'intermedio (b<=a) e c il più basso (c<=b),
quindi la probabilità di vittoria è
(56-n+1)/56
per un attacco di tre armate e una difesa di tre armate,
agli estremi funziona
deve essere interessante guardare gli altri casi, cioè x armate in attacco e y armate in difesa (x,y<=3)
l'algoritmo sarebbe (in c sono una manciata di righe)
int a,b,c
/* inserimento variabli a,b,c */
/* controllo variabili (numeri da 1 a 6) e relativo swap (per ottenere a>=b>=c) */
/* calcolo di n e della probabilita di vittoria */
/* output del risultato */
ok, ti cedo lo scettro di :sborone: per questo topic...
Facciamo così: tu prepara la formula giusta (anche in C se vuoi) e io poi porto tutto in javascript/html..
cackien, non funziona
me ne accorgo adesso
sei salvo, puoi tenerelo scetro
mi rimetto al lavoro, porta pazienza
forse questa va meglio
-------a-1
n= [ SOM(fib(i)) ] + fib(b-1) + c
-------i=1
Ultima modifica di gianlucava; 28-06-07 alle 18:04:21
non so come o perchè, ma mi sono convinto di aver trovato la soluzione:
http://www.oldyetiskiclub.org/stop/20070627/index.html
ci sei vicino signor dio!
si tratta solo di fare una cosa del genere:
dado 1 dado 2 dado 3
n n n
PROBABILITA' DI PERDERE 1 DADO:
PROBABILITA' DI PERDERE 2 DADI:
PROBABILITA' DI PERDERE 3 DADI:
vai gioiello!vai!
come sarebbe perdere ? ..fino ad ora ti interessava vincere... e comunque il fatto di disporre i risultati in altro modo...non cambia il risultato.. faccio l'ultima modifica e poi ti lascio al tuo destino: sei troppo complicato da capire!
si si,mi son confuso.comunque il discorso era quello!
ti ho aggiunto a msn.
se non mi vedi addami te,grazie!
il fatto è che non uso molto msn...uso gtalk
azzarola!e io che ti volevo pagare..vabbè senti..
riesci a fare quest'ultima modifica che ho detto poco fa?
perchè vedi..tu mi fai vedere le probabilità di battere ogni singolo dado..
io cerco la probabilità di batterne uno su 3..la probabilità di batterne 2 su 3..e quella di batterne 3 su 3.che è un discorso diverso.
per incassare uso paypal..ti mando l'indirizzo email a cui mandare il pagamento?
cmnq sto provvedendo, devo solo ripassare le formule di probabilità, così da inserire quelle corrette...
eccelosò..ora ho capito che cercavi un'applicazione pratica del teorema di bayse con tre variabili...ecchecavolo...averlo saputo prima non avrei risposto al topic
capita anche questo..
..ok, riassumendo: dopo aver studiato un pò di statistica...bayse centra poco..o meglio, alla lontana. E per la cronaca gli eventi (i tre lanci di dado) sono stocastici: vi sfido a dimostrare il contrario.
Quindi di seguito il link dell'applicazione FINITA!
SOLUZIONE DEFINITIVA ...spero
ps: PM in arrivo
C'è qualcosa che non funzia..
basta che un dado sia 1 che da tutte le percentuali zero...
hm..forse il fatto che non conosci risiko ti penalizza!!eheh
dunque..
tu fai
1
2
3
io faccio
1
1
3
vinco due tiri.il primo,e il terzo.i dadi vanno messi in ordine dal più piccolo al più grande e confrontati.
quindi il tuo 1 perde contro il mio 1.
il tuo 2 vince contro il mio 2.
il tuo 3 perde col mio 3.
e fin qui ci siamo...solo che tu mi hai chiestohm..forse il fatto che non conosci risiko ti penalizza!!eheh
dunque..
tu fai
1
2
3
io faccio
1
1
3
vinco due tiri.il primo,e il terzo.i dadi vanno messi in ordine dal più piccolo al più grande e confrontati.
quindi il tuo 1 perde contro il mio 1.
il tuo 2 vince contro il mio 2. casomai 1
il tuo 3 perde col mio 3.
..quindi, probabilisticamente parlando ...PROBABILITA' DI PERDERE 1 DADO:
PROBABILITA' DI PERDERE 2 DADI:
PROBABILITA' DI PERDERE 3 DADI:
"perdere 1 dado" significa in realtà "perdere 1 dado e contemporaneamente vincerne 2"...altrimenti dovresti riformulare la frase in "perdere almeno 1 dado"
se ti dicessi:
probabilità di perdere SOLO un dado
probabilità di perdere SOLO due dadi
probabilità di perdere SOLO tre dadi
??
ma poi scusa..non si parlò di vittorie!??! oddio.
..esattamente quello che ho fatto: "perdere SOLO x dadi" significa che gli altri non sono persi...e quindi vinti..
in effetti siamo partiti con la probabilità di "vincere"...ma poi tu hai cambiato le carte in tavola dicendoma poi scusa..non si parlò di vittorie!??! oddio.
Cmnq cambia poco: le formule gira e rigira sono sempre le stesse...basta invertire le probabilità dei singoli eventi (a seconda se si vuole considerare il fattore vittoria o perdita). E per quanto riguarda il fatto di "un solo dado e gli altri contrari" o "almeno un dado"...beh, si tratta solo di aggiungere la somma di un valore..quindi semplice anche questo...
si tratta solo di fare una cosa del genere:
dado 1 dado 2 dado 3
n n n
PROBABILITA' DI PERDERE 1 DADO:
PROBABILITA' DI PERDERE 2 DADI:
PROBABILITA' DI PERDERE 3 DADI:
..
Quindi in finale:
1. decidi se ti interessano i risultati espressi in "probabilità di VINCERE" o in "probabilità di PERDERE"
2. fammi sapere se vuoi la probabilità che tenga conto di "UN SOLO dado vincente (o perdente, se vuoi la probabilità di perdere) e GLI ALTRI perdenti" oppure la probabilità di "ALMENO UN dado vincente e GLI ALTRI quello che viene viene.."
..ora però vado a nanna...
la prima che hai detto!consideriamo la probabilità di vincere..
notte e grazie!
Questo funziona sulla probabilità di almeno una vittoria (P1) o di vittoria completa (P3), il caso di 2 vittorie e una sconfitta è un po più ostico.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c,temp=0;
int k,i;
int fib_b=0,Som1=0,Som2=0,Som3=0;
float Totale=56;
float P1, P2, P3;
printf("Risultati dell'avversario: \n");
scanf("%d %d %d",&a, &b, &c);
printf("Risultati = %d %d %d\n",a, b, c);
if (c > b)
{ temp = c; c = b; b = temp;}
if (c > a)
{ temp = c; c = a; a = temp;}
if (b > a)
{ temp = b; b = a; a = temp;}
printf("risultati ordinati = %d %d %d\n",a, b, c);
for(i=1; i<a; i++)
{ for(k=1; k<=i; k++)
{ Som1 = Som1 + k; }}
fib_b=0;
for(i=1; i<b; i++)
{ fib_b = fib_b + i;}
for(i=b; i<a; i++)
{ temp=0;
for(k=1; k<=i; k++)
{ temp = temp + k;}
Som2 = Som2 - fib_b + temp;}
for(i=c; i<=b; i++)
{ temp = 0;
for(k=1; k<=(b-i); k++)
{temp = temp + k;}
Som3 = Som3 + temp;}
temp = 0;
for(i=1; i<=(b-c); i++)
{ temp = temp + i;}
Som3 = Som3 + temp*(a-b);
printf("\n%d %d %d\n",Som1, Som2, Som3);
P1 = 1- (Som1 - Som2 -Som3)/Totale;
Som1 = 0;
fib_b=0;
for(i=1; i<a; i++)
for(k=1; k<=i; k++)
{ Som1 = Som1 + k; }
for(k=1; k<b; k++)
{ fib_b = fib_b + k; }
P3 = 1 - (Som1 + (7 - a)*(fib_b + c -1))/Totale;
printf("Probabilità di battere almeno un dado: %f\n", P1);
printf("Probabilità di vittoria totale: %f\n", P3);
return 0;
}
Ultima modifica di gianlucava; 29-06-07 alle 15:54:55
Purtroppo non è quanto richiesto da anders (almeno secondo l'ultimo post).
La soluzione sembra avvicinarsi e potrebbe proprio essere questa: DADI KNOR