Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-08-2009, 22:29   #1
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
[C#] Risiko



Salve a tutti, scrivo questa volta non per chiedere un aiuto ma per condividere il risultato di un mio studio.
Sono un appassionato di Risiko e, conseguentemente, anche di rosiko . Il Risiko, c'è da dirlo, è fortemente influenzato dal caso: senza un'adeguata quantità di fattore C, non si fa nulla . E' per questo che ho pensato di scavare nei meandri del calcolo delle probabilità per cercare di capire i limiti e le costanti di questo interessante gioco.
Per il primo appuntamento, ho pensato di studiare che relazione fortunosa esiste tra attaccante e difensore.
Per chi non lo sapesse, la sessione di attacco nel Risiko si svolge con le seguenti regole:

- L'attaccante dichiara da quale stato di sua "proprietà" attacca quale stato altrui
Quote:
es: Dall'Ontario all'Alberta
- A questo punto può decidere con quanti dadi attaccare: se 1, 2 o 3. Può attaccare con un numero di dadi che sia <= al numero di armate (i carrarmati) presenti nello stato di attacco - 1
Quote:
Ontario: 3 armate -> attacco con massimo 2 dadi
Ontario: 6 armate -> attacco con massimo 3 dadi
- Il difensore decide con quanti dadi difendersi: se 1, 2 o 3. Può difendersi con un numero di dadi che sia <= al numero di armate presenti nello stato attaccato.
- L'attaccante tira i dadi
- Il difensore tira anch'egli i dadi
- Il dado con il valore più alto dell'attaccante viene confrontato con il dado con il valore più grande del difensore.

- Il confronto avviene così (A e D sono rispettivamente il valore del dado dell'attaccante e del difensore confrontati):
A > D allora vince A
A <= D allora vince D
Quote:
A = 5 e D = 5 allora vince D
A = 1 allora vince D (qualsiasi valore di D tra 1 e 6 è >= 1)
D = 6 allora vince D
Il confronto avviene partendo dal valore più alto fino al valore più basso. Per chiarire:
Quote:
L'attaccante tira 3 dadi e ottiene [4, 3, 5], il difensore tira 2 dadi e ottiene [4, 4]:
Si creano così le coppie di confronto:
[5, 4] e [4, 4]
Il 3 non viene considerato perché è il più piccolo del lancio e non ha un valore di confronto dalla parte della difesa.
[5, 4] vince A perché 5 > 4
[4, 4] vince D perché 4 <= 4.
In questo caso l'attaccante ed il difensore tolgono dal proprio stato 1 armata ciascuno.
Diventa chiaro che attaccare/difendersi con il maggior numero di dadi possibile risulta vantaggioso. Si nota anche che l'attaccante è in svantaggio rispetto al difensore sulla base dei valori dei dadi, secondo la tabella di confronto. E' proprio di questo che sto parlando: voglio quantificare lo svantaggio che ha l'attaccante, e voglio farlo calcolando il rapporto medio tra il numero di armate che un attaccante riesce ad abbattere e che un difensore riesce ad abbattere in una sessione di attacco/difesa.
Mi spiego meglio, con termini matematici: voglio trovare
Quote:
il limite,
per numero di lanci effettuati tendente ad infinito,
di D/A,
dove A è il numero di armate perse dall'attaccante e D il numero di armate perse dal difensore
Meglio di così non posso...

Siccome risulta più vantaggioso tirare sempre 3 dadi, e siccome questo è il caso più comune, ipotizzo che l'attaccante tiri 3 dadi e che il difensore faccia lo stesso. Per ogni possibile risultato dei due lanci valuto il numero di armate perse da ciascuna parte e lo sommo, per poi calcolare finalmente il rapporto D/A.

Bisogna cominciare a studiare i dadi. 3 dadi tirati contemporaneamente generano delle terzine rappresentabili da
COMBINAZIONI RIPETUTE DI ORDINE 6 E CLASSE 3
Queste sono tutte le possibili combinazioni di valori ottenute dal tiro di 3 dadi:
Codice:
[1, 1, 1] - 1
[1, 1, 2] - 3
[1, 1, 3] - 3
[1, 1, 4] - 3
[1, 1, 5] - 3
[1, 1, 6] - 3
[1, 2, 2] - 3
[1, 2, 3] - 6
[1, 2, 4] - 6
[1, 2, 5] - 6
[1, 2, 6] - 6
[1, 3, 3] - 3
[1, 3, 4] - 6
[1, 3, 5] - 6
[1, 3, 6] - 6
[1, 4, 4] - 3
[1, 4, 5] - 6
[1, 4, 6] - 6
[1, 5, 5] - 3
[1, 5, 6] - 6
[1, 6, 6] - 3
[2, 2, 2] - 1
[2, 2, 3] - 3
[2, 2, 4] - 3
[2, 2, 5] - 3
[2, 2, 6] - 3
[2, 3, 3] - 3
[2, 3, 4] - 6
[2, 3, 5] - 6
[2, 3, 6] - 6
[2, 4, 4] - 3
[2, 4, 5] - 6
[2, 4, 6] - 6
[2, 5, 5] - 3
[2, 5, 6] - 6
[2, 6, 6] - 3
[3, 3, 3] - 1
[3, 3, 4] - 3
[3, 3, 5] - 3
[3, 3, 6] - 3
[3, 4, 4] - 3
[3, 4, 5] - 6
[3, 4, 6] - 6
[3, 5, 5] - 3
[3, 5, 6] - 6
[3, 6, 6] - 3
[4, 4, 4] - 1
[4, 4, 5] - 3
[4, 4, 6] - 3
[4, 5, 5] - 3
[4, 5, 6] - 6
[4, 6, 6] - 3
[5, 5, 5] - 1
[5, 5, 6] - 3
[5, 6, 6] - 3
[6, 6, 6] - 1
che sono in tutto 56.
Il numero dopo il trattino è la probabilità associata, su 216 (6³), che sono le disposizioni ripetute di ordine 6 e classe 3.
E' in definitiva il numero di permutazioni possibili per quella terzina, ottenuto così:
Quote:
3! / n!,
dove n è il numero di elementi uguali tra loro nella terzina.
es:
P([4, 5, 5]) = 3! / 2!
perché l'elemento 5 è ripetuto 2 volte.
Otteniamo 3.
A questo punto, non ho fatto altro che confrontare ogni possibile terzina dell'attaccante con ogni possibile terzina del difensore, determinare il numero di armate perse da ciascun giocatore, sommarle e calcolarne il rapporto, tenendo conto però della probabilità che ciascuna terzina ha di comparire.

Bando alle ciance, questo è il codice. Non è il massimo dell'efficienza, visto che non presenta nessuna ottimizzazione. Ho appena iniziato ad usare il C#, quindi perdonatemi errori madornali.
Codice:
using System;
using System.Collections.Generic;

namespace Risiko {
    class Risiko {
        static void Main ( string[] args )
        { 
            List<Terzina> lanci = combinazioniDadi( );
            uint[][][] esiti = new uint[lanci.Count][][];
            for ( int i = 0 ; i < esiti.Length ; i++ ) {
                esiti[i] = new uint[lanci.Count][];
                for ( int j = 0 ; j < esiti[i].Length ; j++ ) {
                    esiti[i][j] = new uint[2];
                }
            }

            for ( int i = 0 ; i < esiti.Length ; i++ ) {
                for ( int j = 0 ; j < esiti[i].Length ; j++ ) {
                    esiti[i][j][0] = lanci[i].abbatteDifesa( lanci[j] );
                    esiti[i][j][1] = lanci[i].permutazioni * lanci[j].permutazioni;
                }
            }

            ulong pAttacco = 0, pDifesa = 0;
            for ( int i = 0 ; i < esiti.Length ; i++ ) {
                for ( int j = 0 ; j < esiti[i].Length ; j++ ) {
                    pAttacco += (ulong)( esiti[i][j][0] * esiti[i][j][1] );
                    pDifesa += (ulong)( ( 3 - esiti[i][j][0] ) * esiti[i][j][1] );
                }
            }

            double rapporto = (double)pAttacco / pDifesa;
            System.Console.WriteLine( "{0} / {1}", pAttacco, pDifesa );
            System.Console.WriteLine( rapporto );
            System.Console.ReadLine( );

        }

        

        public static List<Terzina> combinazioniDadi ( )
        {
            List<Terzina> l = new List<Terzina>( );
            for ( uint a = 1 ; a <= 6 ; a++ ) {
                for ( uint b = a ; b <= 6 ; b++ ) {
                    for ( uint c = b ; c <= 6 ; c++ ) {
                        l.Add( new Terzina( a, b, c));
                    }
                }
            }
            return l;
        }
    }

    class Terzina {
        public uint a;
        public uint b;
        public uint c;
        public uint permutazioni
        {
            get
            {
                return calcPermutazioni( );
            }

        }

        public Terzina ( uint a, uint b, uint c )
        {
            if ( a <= b && b <= c ) {
                this.a = a;
                this.b = b;
                this.c = c;
            } else {
                throw new Exception( );
            }
        }

        public uint abbatteDifesa ( Terzina dif )
        {
            uint k = 0;
            if ( this.a > dif.a ) k++;
            if ( this.b > dif.b ) k++;
            if ( this.c > dif.c ) k++;
            return k;
        }

        public uint abbatteAttacco ( Terzina att )
        {
            uint k = 0;
            if ( this.a >= att.a ) k++;
            if ( this.b >= att.b ) k++;
            if ( this.c >= att.c ) k++;
            return k;
        }

        private uint calcPermutazioni ( )
        {
            if ( a == b && a == c )
                return 1;
            else if ( a == b || a == c || c == b )
                return 3;
            else
                return 6;
        }

    }
}
Il risultato è il seguente:
Codice:
51642 / 88326
0,584674954147137
E' da leggere così:
in una sessione di attacco prolugata, il numero di armate perse dall'attaccante si avvicina sempre più a 1,71 (il reciproco di 0.5846) volte le armate perse dal difensore.

Insomma, conviene giocare in difesa


Sono apprezzati consigli, critiche, eccetera
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2009, 18:34   #2
zulutown
Senior Member
 
Iscritto dal: Jul 2009
Messaggi: 1161
Quote:
Originariamente inviato da malocchio Guarda i messaggi
in una sessione di attacco prolugata, il numero di armate perse dall'attaccante si avvicina sempre più a 1,71 (il reciproco di 0.5846) volte le armate perse dal difensore.

Insomma, conviene giocare in difesa

è logico che è favorita la difesa, a parità di punteggio vince il difensore.

da bambino risiko mi piaceva molto
poi ho giocato un po' su internet in partite da 6 persone e mi son accorto che è un gioco abbastanza "stupido", fondamentalmente accade che tutti giocano in difesa cercando di aumentare le proprie truppe sui territori di frontiera,

poi arriva il "kamikaze" di turno:

DI solito il giocatore che è messo peggio e che non avendo speranze usa tutta le sue truppe contro qualche "vicino" in un attacco che annienta entrambi e quindi gli altri 4 possono di nuovo espandersi, poi nuovamente tutti stanno sulla difensiva e chi è messo peggio e sa che comunque perderà tenta altro attacco disperato e l'altro sfortunato giocatore scelto viene penalizzato. e così via..
__________________
Web2.0 Guides And Tutorials SLR: Canon 6D ZOOM: Canon EF 24-105mm f/4L IS USM FISSI: - Canon EF 28mm f/1.8 USM - Canon EF 40mm f/2.8 STM - Canon EF 50mm f/1.4 USM - Canon EF 100mm f/2 USM - Canon EF 200mm f/2.8L USM II ALTRO: Canon 430 EX II
zulutown è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2009, 08:34   #3
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ho sempre preferito il futuRisiKo!
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2009, 08:36   #4
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ho sempre preferito il futuRisiKo!
Io ho sempre e solo giocato al classico
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2009, 08:58   #5
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da zulutown Guarda i messaggi
è logico che è favorita la difesa, a parità di punteggio vince il difensore.

da bambino risiko mi piaceva molto
poi ho giocato un po' su internet in partite da 6 persone e mi son accorto che è un gioco abbastanza "stupido", fondamentalmente accade che tutti giocano in difesa cercando di aumentare le proprie truppe sui territori di frontiera,

poi arriva il "kamikaze" di turno:

DI solito il giocatore che è messo peggio e che non avendo speranze usa tutta le sue truppe contro qualche "vicino" in un attacco che annienta entrambi e quindi gli altri 4 possono di nuovo espandersi, poi nuovamente tutti stanno sulla difensiva e chi è messo peggio e sa che comunque perderà tenta altro attacco disperato e l'altro sfortunato giocatore scelto viene penalizzato. e così via..
Sì il Risiko sotto certi punti di vista presenta delle dinamiche che si reiterano sempre, ma dipende anche dai giocatori... Penso che la situazione cambi da compagnia a compagnia .

A me danno fastidio quelli che giocano solo sulla difensiva, lasciando armate un po' qui un po' là invece di puntare su confini solidi nel tentativo di ammortizzare i danni. Io sono uno invece che si butta, e il 90% delle volte non ho abbastanza fortuna per fare quello che voglio fare, per cui finisco con l'auto-abbattermi (tipico, il kamikaze di prima ).

Però, ignorando il fatto che ci sono tanti fattori che portano alla sconfitta o alla vittoria, il Risiko si presta abbastanza bene a considerazioni logiche/probabilistiche, che regolarmente si rivelano (quasi) inutili .

A questo punto potrei fare un'azione commerciale di questo genere:
Avete presente il SuperPI, il programma usato per benchare che calcola un certo numero di cifre del pigreco? Potrei fare come quelli che l'hanno scritto e mettermi a vendere le cifre della "costante del Risiko"
Qualche offerente?
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2009, 09:32   #6
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
Quote:
Originariamente inviato da malocchio Guarda i messaggi
A questo punto potrei fare un'azione commerciale di questo genere:
Avete presente il SuperPI, il programma usato per benchare che calcola un certo numero di cifre del pigreco? Potrei fare come quelli che l'hanno scritto e mettermi a vendere le cifre della "costante del Risiko"
Qualche offerente?
Appena trovo un'utilitá per la sedicesima cifra decimale della "costante del Risiko", te lo compro io
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2009, 09:37   #7
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da Kralizek Guarda i messaggi
Appena trovo un'utilitá per la sedicesima cifra decimale della "costante del Risiko", te lo compro io
Asta sulla baia

Vabbè
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Nintendo valuta una Switch 2 OLED con sc...
ChatGPT torna disponibile su WhatsApp in...
Non vuoi usare l'intelligenza artificial...
Metà del web ormai è bot: ...
Le big IA obbligate a cedere metà...
HP blocca anche le cartucce di inchiostr...
Acquisizione Apple: SigScalr chiude, gli...
Cooler Master HAF II 500 integra le vent...
I musulmani non dovrebbero usare le crip...
AMD Radeon 9000 pronte a sorpassare le N...
Soulframe, il nuovo gameplay chiarisce m...
La Commissione UE presenterà una ...
Niente più eliche: con due ali, i...
Waze si aggiorna con nuove funzioni IA: ...
Oltre 200 economisti ed esperti di IA la...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v