Distribuire casualmente

haffnerit1
Ciao a tutti.
Dopo molte ricerche sono approdato al vostro bel forum per chiedervi indicazioni ed aiuto.
Premetto che la mia conoscenza di informatica e matematica è di poco pessima, almeno negli aspetti più specifici.
Il problema che sto cercanco di risolvere, per ora senza evidenti risultati è il seguente:

distribuire casualmente una serie di dati all'interno di aree ben precise usando open office (vedo diversi occhi sgranati) :)

La mia esigenza deriva dal dover organizzare un torneo così strutturato:
- Numero n di partecipanti (32, 64 o 128)
- Suddiviso in diversi gironi da 8 giocatori
- Ogni giocatore può iscriversi 5 volte in diversi gironi

L'aiuto che vi chiedo, se possibile, è di distribuire i giocatori nei diversi gironi in modo casuale. Ovviamente lo stesso giocatore non può essere presente nello stesso girone.
Ho costruito 4 gironi da 8 coppie in ogni singolo foglio, dunque con l'aggiunta di altri fogli si procede di 32 in 32.

Alla domanda:"Ma hai posto il quesito sul forum OOo?" Sì, purtroppo non ho ricevuto alcuna risposta.
Ogni aiuto, indicazione o quant'altro vi possa venire in mente sarebbe per me una sicura fonte di ispirazione. Poco è meglio di nulla :)

Grazie in anticipo!!!

Risposte
apatriarca
Non sono certo di aver compreso del tutto il tuo problema. Provo quindi a farti qualche domanda:
1. I 32, 64 o 128 partecipanti includono le ripetizioni oppure ognuno di essi si può iscrivere più volte?
2. Qual'è esattamente il numero di gironi? In un certo senso questa domanda è legata alla domanda precedente in quanto immagino che il numero di gironi corrisponda al numero di iscrizioni diviso 8.
3. Ci sono altre limitazione da prendere in considerazione? Per esempio si potrebbe essere interessati a non ripetere due volte lo stesso girone con le stesse persone.
4. Perché OOo? In che formato si trovano i dati di ingresso e quali sono esattamente?

haffnerit1
1. Ogni coppia si può iscrivere da un minimo di 1 ad un massimo di 5, dunque, se ho capito la prima domanda, all'interno delle 32, 64 ecc. sono comprese le ripetizioni (dunque più iscrizioni per coppia).
2. Il numero di iscrizioni lo decido prima. In questo caso diciamo che sono 64, dunque risultano 8 gironi da 8 coppie ciascuno.
3. L'unica limitazione è che la stessa coppia non può essere presente nello stesso girone (scusa se mi ripeto, ma cerco di dipanare il più possibile i dubbi). Sarebbe molto apprezzato il fatto di non incontrare la stessa coppia per più volte in gironi dversi, ma ho l'impressione che complichi di molto le cose.
4. Ho sempre usato OOo perché è comodo per fare i tabelloni. I dati si trovano all'interno di un foglio di calcolo e sono i nomi delle coppie. Inserisco le immagini per maggior chiarezza.





L'esempio è un torneo a 64 coppie con massimo 5 iscrizioni. Con una semplicissima funzione di ugualianza ho distribuito le varie coppie casualmente all'interno dei gironi, dunque quando si scrive il nome della coppia nel primo foglio, compare in un altro foglio all'inteno dei gironi.
Il problema di questo metodo è che al mutare del numero delle iscizioni e dei gironi, devo rifare tutto dall'inizio e farlo con 128 o più coppie diventa veramente impegnativo e l'errore è sempre dietro l'angolo.

Ho approfondito un po' la sezione "Macro" su OOo, e, da quel che ho capito, si possono collegare istruzioni anche complesse alle celle o a gruppi di celle. La guida recita:"OpenOffice.org 3.3 dispone di una API che permette di controllarne i componenti con diversi linguaggi di programmazione usando un apposito Software Development Kit (SDK)".

Affermare che sono un pesce fuori dall'acqua è poco :)

Rggb1
"haffnerit1":
distribuire casualmente una serie di dati all'interno di aree ben precise usando open office (vedo diversi occhi sgranati) :)

Usando la funzione CASUALE.TRA() o RANDBETWEEN() che dir si voglia, non va bene?

haffnerit1
Grazie per il suggerimento rggb.
Ho notato che non produce errore l'inserimento di celle al posto dei numeri.
Faccio delle prove :)

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