Mailing List del Fortunae LUG ============================ > L'algoritmo infatti doveva essere abbastanza "intelligente" > da capire che se arrivato ad un certo punto aveva ancora > 5 carte da distribuire e la differenza di carte tra un mazzo > e l'altro era appunto di 5 carte avrebbe dovuto darle tutte > al mazzetto con meno carte. > Ovviamente questo caso particolare m'ha fatto subito pensare > ad una funzione che dinamicamente generasse in base alla > differenza di carte tra i mazzetti e le carte ancora da > distribuire delle percentuali su "a chi assegnare" tale carta. > Facciamo un esempio... alla partenza entrambi i mazzetti > hanno lo stesso numero di carte (0) quindi le percentuali > sono uguali... 50% ciascuno... la carta viene assegnata al > mazzetto A. Ora la differenza di carte tra i mazzetti è 1 > e le carte rimanenti sono 39... quindi bisogna sbilanciare > di poco le probabilità che la seconda carta vada al mazzetto > B... facciamo 51% e 49%. Però anche la seconda carta va > al mazzetto A... quindi sbilanciamo nuovamente le probabilità, > per esempio 56% e 44%. Etc... > > Insomma mi serve una funzione che in base alle carte che > rimangono ancora da distribuire e la differenza di carte > tra i mazzetti generi delle percentuali che siano adeguate. Davvero molto interessante la tua soluzione, ne avrei una da proporre utilizzabile se e solo se non è importante l'ordine delle carte: si divide il mazzo in due con rand() in modo che mazzoA e mazzoB hanno un numero non definito di carte tra 0 e 40 ma mazzoA + mazzoB = 40 poi si trova la differenza di carte tra il mazzo più numeroso e 20 e si rifà un rand() per tante volte quanto il numero ottenuto, prendendo le carte da un mazzo e spostandole nell'altro. Io sinceramente ho buttato giù un pò di righe di codice, ma non riesco a compilarlo ("segmentation fault" con un gcc 2.95.3) e poi ancora ci sarebbe qualche cosa da migliorare ... comunque, è sicuramente più bello e più professionale l'algoritmo di Simon ... ciao ciao, m27 -- <simon> ho capito una cosa stasera, non devo uscire quando non ho voglia di uscire...