Domanda

Per consiglio degli studenti di quest'anno, io sono parte del comitato "canzoni", prendiamo le canzoni. Purtroppo, i bambini presso le danze finiscono sempre per odiare alcune delle scelte di canzoni stupide. Ho pensato che avrei potuto renderlo diverso quest'anno. Giovedi scorso, ho creato una semplice applicazione PHP così i bambini potevano presentare le canzoni nel database, fornendo un nome della canzone, artista e genere (da un menu a discesa). Ho anche implementato una funzione di voto simile a Reddit di. Fare clic su un pulsante di upvote, hai upvoted la canzone, incrementato il conteggio upvote. Stessa cosa con downvotes.

Anywho, nel database, ho tre bocconcini di informazioni che ho pensato che avrei potuto usare per votare queste canzoni, upvotes, downvotes, e un timestamp. Per un po ', il rango è stato creato semplicemente avendo le canzoni con il più alto numero di "voto" in alto. Cioè, il più upvotes, meno downvotes (upvotes - downvotes) sarebbe in cima alla lista. Che ha lavorato, per un po ', ma ci sono stati circa 75 canzoni sulla lista da Domenica, e le canzoni che sono state presentate prima erano semplicemente in cima alla lista.

Domenica, ho cambiato l'algoritmo di rango a (upvotes - downvotes) / (IndicatoreDataOraCorrente - CreationTimestamp), che è, più alto è il valore del tuo voto nella minore quantità di tempo, maggiore è la canzone sarebbe sulla lista. Questo funziona meglio, ma ancora non come mi piacerebbe.

Che cosa succede ora, è che l'istante si crea una canzone e upvoted ad un conteggio dei voti di 1, finisce in cima alla lista da qualche parte. Canzoni che hanno voto conta nelle negativi non sono visti spesso perché i bambini di solito non scorrere fino alla fine.

Credo che avrei potuto ordinare i dati in modo che i brani inferiori appaiono in cima, così le persone sono costrette a vedere le canzoni più bassi. Onestamente, non ho mai dovuto lavorare su un algoritmo di "popolarità" prima, quindi, quali sono i tuoi pensieri?

http://www.songs.taphappysoftware.com - non so se dovrei mettere questo qui o no, potrebbe causare alcune canzoni indesiderate al ballo: 0

È stato utile?

Soluzione

Questa è una domanda molto buona. Ci sono alcune domande simili che sono state poste qui.

Questo articolo è probabilmente una buona punto di partenza. A quanto pare upvotes meno downvotes è un brutto modo di farlo. Il modo migliore è usare complicato matematica per assegnare un punteggio ad ogni e ordinare quello.

Ecco una funzione di punteggio in Ruby dall'articolo:

require 'statistics2'

def ci_lower_bound(pos, n, power)
    if n == 0
        return 0
    end
    z = Statistics2.pnormaldist(1-power/2)
    phat = 1.0*pos/n
    (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end
  

pos è il numero di positivi   Valutazione, n è il numero totale di   giudizi, e si riferisce al power   potenza statistica: pick 0.10 per avere un   95% di probabilità che i tuoi più bassi è destinato   correggere, 0,05 per avere una probabilità del 97,5%,   ecc.

Di cosa usabilità, vorrei ordinare i dati in base al punteggio, ma non avrebbe mostrato il punteggio per l'utente. Vorrei mostrare solo il numero di upvotes e downvotes.

Altri suggerimenti

Come sull'ordinamento canzoni di tempo o numero di voti (negativo + positivo) la pubblicazione? Se il vostro obiettivo è quello di dare ogni canzone uguale attenzione, questo sembra abbastanza buono.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top