Originariamente inviato da FelixR
non c'è nessun modo per calcolare il tasso di aumento, perchè per restare sotto l'uno dovresti sapere e priori quante volte verrà suonata la canzone e "normalizzare" rispetto a quel valore.
Puoi però ricalcolarlo ogni volta che una canzone viene suonata o skippata.
Supponiamo che 0.6 sia rating iniziale dell'utente(0.5 se non lo definisce). In play abbiamo il numero di volte ascoltata e in skip il numero di volta che l'ha stoppata. Possiamo fare una specie di sistema a votazioni e ad ogni aggiornamento fare una media; mi spiego meglio:
Il primo voto sarà 0.6; se l'utente skippa la canzone il voto è zero, se la finisce il voto è uno. In tutto il numero di voti saranno play+skip+1. Per ricalcolare il nuovo rating dopo uno skip o un play basta fare:
(rating_iniziale+play)/(play+skip+1)
questo valore sarà sempre tra 0 e 1.
Questo sistema, comunque, di inizializzare il rating a 0.5 non mi piace affatto, perchè se lui non l'ha mai ascoltata non vuol dire che gli piace a metà, ma che non gli piace. Secondo me dovresti fare che il rating_iniziale è 0 e se lui vuole la inizializza a 1(oppure potresti anche fare che la inizializzi dopo il primo ascolto, 0 se skippa 1 se la completa). Questo è anche più logico dal punto di vista matematico perchè se la skippa sempre, utilizzando la formula di sopra, nel secondo caso il rating finale sarà 0 mentre nel caso precedente sarà sempre positivo. Stessa cosa, se gli piace la inizializza a 1 e se la sente sempre tutta il rating finale resterà a 1.
Se non è questo l'effetto che vuoi ottenere, e cioè che anche se la skippa sempre vuoi che il voto si abbassi gradualmente, usa il primo sistema.
Ciao