Newsgroup: it.comp.www.php
Titolo: Recuperare i numeri piu' grandi

Ciao a tutti,
questa e' la prima volta che scrivo qui e spero di non chiedere qualcosa
di cui si e' gia' parlato (ho letto i subject degli ultimi messaggi ma
non ho trovato nulla a riguardo).
Sto scrivendo un piccolo gioco matematico in php. Vengono generati dei
numeri interi casuali (da 1 a 20) e tali numeri vengono registrati in un
array (gli "1" alla posizione [1], i "2" alla posizione [2] ecc...)
Alla fine avrei bisogno di sapere quali sono i numeri usciti piu' di
frequente (ad es sono usciti 10 "uno", 8 "sette", 7 "quindici" e 5
"diciotto").
Potrei ordinare (sort) l'array ma i dati verrebbero mischiati e non
troverei piu' (ad es) il valore 10 alla posizione [1]
Ho provato a fare "n" scansioni (n e' la quantita' di numeri da
recuperare e mettere "in classifica") dell'array facendogli recuperare
ogni volta il numero maggiore e la posizione (impostandolo poi a 0 per
non fargliela trovare alla scansione successiva) ma non credo sia il
modo migliore...
Qualcuno conosce una funzione o altro che faccia al caso mio?
Grazie
-- 
Mr. Fix @ work

"diciotto").
Se ti serve solo il più frequente puoi usare la funzione max() per
trovare il valore massimo dell'array e la funzione array_search() per
trovare l'indice corrispondente. Se vuoi invece sapere i più frequenti
devi riordinare in qualche modo l'array, usa una delle tante funzioni
disponibili sugli array.
http://www.php.net/manual/it/
 il Vangelo del programmatore PHP :-)
Ciao
Francesco
_____________________________________
Per rispondere in e-mail togli NOSPAM 

troverei piu' (ad es) il valore 10 alla posizione [1]
Basta che tu usi chiavi non numeriche.
Metti i sette dentro $numeri['x7'], o in generale,
	$n = random...
	$elenco["x$n"]++;
Ora puoi ordinare $elenco. Estrai le chiavi, levi il primo carattere,
e quel che rimane e' il numero; il valore e' la sua frequenza.
Oppure fai il porco:
	$n = random...
	$elenco["$n.0"]++;
E a questo punto quando tiri fuori la chiave, questa e' considerabile
un numero intero (7.0 == 7), ti basta la conversione implicita.
Leonardo SE&O
-- 
the shadow of the dome of pleasure
floated midway on the waves,
where was heard the mingled measure
from the fountain and the caves.

 array (gli "1" alla posizione [1], i "2" alla posizione [2] ecc...)
potresti memorizzare nell'array le occorrenze di ogni numero 
incrementando quella cella quando esce il numero corrispondente.
Per trovare il più frequente ti basterò poi trovare il valore massimo 
dell'array.
ciao
Alesi_27

 dell'array.
Il problema era di trovare i primi "n" numeri piu' frequenti.
La soluzione migliore mi pare quella di Leonardo.
Thanks anyway.  : )


 
http://www.php.net/manual/it/
 il Vangelo del programmatore PHP :-)
I know, non passa giorno che non lo visiti!  : )
Thanks


 un numero intero (7.0 == 7), ti basta la conversione implicita.
Questa soluzione mi sembra piu' complicata. Ci sono vantaggi evidenti
rispetto alla soluzione precedente?
Thanks!  : )


I know, non passa giorno che non lo visiti!  : )
eh sì, la preghierina quotidiana ci vuole ;-)


Citando dal manuale (credo che faccia al caso tuo)
lista = asort(array_count_values ( mio_array_di_numeri));
Fammi sapere se ho capito bene se è quello che cerchi
array_count_values
(PHP 4 )
array_count_values -- Conta tutti i valori di un array
Descrizione
array array_count_values ( array input)
array_count_values() restituisce un array che ha i valori dell'array input
per chiavi e la loro frequenza in input come valori.
      Esempio 1. Esempio di array_count_values()
$array = array (1, "ciao", 1, "mondo", "ciao");
print_r(array_count_values ($array));
      Il risultato di questo programma sarà: Array
(
    [1] => 2
    [ciao] => 2
    [mondo[ => 1
)

 )
Uhm... Questo effettuivamente potrebbe essere utile nel caso vengano
generati pochi numeri (ad es 20, come dicevo inizialmente). Basterebbe
un ciclo for con elenco[$ciclo]=numerorandom.
Pero' nel caso di un elevato quantitativo di numeri casuali (anche
piccoli, tra 0 e 20) avrei un array enorme che contiene valori piccoli,
mentre sarebbe piu' pratico avere un array con 20 celle contenenti le
ripetizioni del numero corrispondente (ad es $elenco['x15']=86, cioe' ci
sono 86 ripetizioni del numero 15)
Grazie della dritta, la funzione che hai evidenziato tornera'
sicuramente utile!  : )


}
Si', ma come fai a sapere qual e' il numero nella posizione 3? Il terzo
elemento di $elenco potrebbe essere
	...
	'x12'	=>	342,
	...
indicando che il numero 12 e' uscito 342 volte.
No, l'unica e' estrarre la coppia chiave => valore, e dopo decodificare
la chiave (basta togliere il primo carattere, la x).
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.