Formula matematica o algoritmo per gioco

*acqua*11
Salve,
vorrei sapere se esiste una formula matematica o un algoritmo che mi risolva il seguente problema: vi sono 2 giocatori, ognuno con un parametro che si riferisce alla sua velocità nel fare la sua mossa. Il giocatore G1 con velocità v1 e il giocatore G2 con velocità v2 ora i casi che possono verificarsi sono i seguenti:

se (v1=v2) //G1 e G2 sono entrambi veloci nelle mosse
G1 e G2 hanno entrambi una probabilità molto alta nel colpirsi

se(v1>v2) // G1 è più veloce di G2
la probabilità che l'attacco di G1 vada a buon fine è più alta di quella dell'attacco di G2

se(v1 la probabilità che l'attacco di G1 vada a buon fine è minore rispetto quella dell'attacco di G1


io ho provato con una banale proporzione a calcolarmi la percentuale della buona riuscita di un attacco ma non rispetta tutti i casi.

[/code]

Risposte
Umby2
"*acqua*":


se(v1 la probabilità che l'attacco di G1 vada a buon fine è minore rispetto quella dell'attacco di G1

[/code]


è un errore , vero ?

Angus_Mac
Scusa ma hai già risolto il tuo stesso problema poi la percentuale cosa ti serve se v1

krek1
Non sembra complicato ma dovresti definire meglio alcuni punti.

per esempio se hai:

$G_1,G_2,G_3,G_4$

$V_1=V_2>V_3=V_4$

$G_1vsG_2$ hanno le stesse probabilità di $G_3vsG_4$?

*acqua*11
Allora mi spiego meglio:
mi serve una formula o un algoritmo che mi restituisca un valore compreso fra 0 e 100 che sta ad indicare la percetuale con cui un attacco va a buon fine da parte di un giocatore G1 nei confronti di un giocatore G2, ogni giocatore ha una velocità v1 e v2 rispettivamente... i casi che possono verificarsi sono i seguenti:

se(v1>v2) // G1 è più veloce di G2
la probabilità che l'attacco di G1 vada a buon fine è più alta di quella dell'attacco di G2

se(v1 la probabilità che l'attacco di G1 vada a buon fine è minore rispetto quella dell'attacco di G1

ES: v1=57 e v2=8
La formula mi dovra restiture:
la probabilita' che l'attacco di G1 vada a buon fine è del 86%
la probabilita' che l'attacco di G2 vada a buon fine è del 14%

Questo caso lo posso risolvere banalmente con la seguente formula:
x = (v1-v2)*100/v1

nel caso però io ho due velocità quasi uguali es: v1=23 e v2=19 questa non vale più in quanto mi restituisce una percentuale bassa mentre io voglio una percentuale quasi del 100% e che rispetti sempre che G1 ha più probabilita' che il suo attacco riesca rispetto a G2 è possibilie risolvere cio' con una formula o un algoritmo?

Angus_Mac
Scusa ma basta che fai nel seguente modo

Dim V1 as integer
Dim V2 as integer
Dim PercentualeV1,PercentualeV2 as integer

IF V1>V2 then
PercentualeV1=100
PercentualeV2=0
Else:
PercentualeV1=0
PercentualeV2=100
End if

*acqua*11
Angus_Mac ma in quel modo un giocatore attacca e l'altro non riesce mai ad attaccare...
lo scontro diventa a senso unico e non c'è gusto...

l'algoritmo dovrebbe sempre restituirmi due valori interi confrontabili e uguali in un solo caso, cioè quando v1=v2. In questo caso il valore sarà 100 cioè tutti e due attaccano sempre e lo scontro è avvincente.

Angus_Mac
Allora spiegati meglio che tipo di gioco è quello che vuoi fare e magari ti saprò aiutare di più in oltre in che lingiaggio lo stai ocmpilando c++ java exx

edogaldo
pi=vi*100/max(v1,v2)?!?

Tieni però presente che p1+p2<=200...

altrimenti pi=vi*100/(v1+v2), in questo caso p1+p2=100, v1=v2 implicherebbe p1=p2=50%

e con n>2 (es n=3) sarebbe pi=vi*100/(v1+v2+v3), quindi diventerebbe v1=v2=v3 => p1=p2=p3=33,333333333333333333333...%


Ciao, E.

edogaldo
Ancora una cosa: esiste una velocità max? perché se esiste allora potresti fare pi=vi*100/vmax
In questo caso avresti pi=100% <=> vi=vmax
Se però non esiste una vmax allora hai a disposizione solo un rapporto relativo ed in questo caso devi decidere tu cosa vorresti che fosse il 100%
nel caso pi=vi*100/max(v1,v2) sarebbe sempre p1=100% e|o p2=100%..
altrimenti, che percentuali vorresti assegnare ai casi {v1=1,v2=2}, {v1=1000,v2=2000} in entrambi i casi hai v2=2*v1 ma con valori assoluti molto diversi, assegneresti ad entrambe le coppie le stesse percentuali?

Un'altra soluzione potrebbe essere: pi=vi*100/(max(v1,v2)+abs(v1-v2))
in questo caso otterresti il 100% solo se v1=v2, se t'ispira di +...

Riciao, E.

*acqua*11
Grazie edogaldo,

la tua formula pi=vi*100/(max(v1,v2)+abs(v1-v2)) è proprio quello che cercavo... :-D

infatti il mio problema era appunto che non esiste una velocità max...

edogaldo
bene! comunque tieni presente che per v1 molto diverso da v2 avrai che max(p1,p2)->50% e min(p1,p2)->0...

Riciao, E.

giacor86
"Angus_Mac":
Allora spiegati meglio che tipo di gioco è quello che vuoi fare e magari ti saprò aiutare di più in oltre in che lingiaggio lo stai ocmpilando c++ java exx


Non mi pare che abbia chiesto un aiuto informatico, ha solo chiesto un algoritmo (ossia una formula) matematica che risolva il suo problema, che mi sembra chiarissimo sin dall'inizio.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.