Random pick in pagina asp
Ian CPFC non è online. Ultima attività: 13/05/2008 15.23.16Ian CPFC
Inserito il: 13 maggio 2008 15.04
1 messaggio dal 13 mag 2008
Salve, premetto che non ho particolare conoscenza di programmazione, e vi chiedo un aiuto. Immagino che per gli esperti sia possa essere una sciocchezza ma io non lo so fare...

Esempio
Ho una tabella in un database

Mario - Via Bianchi - Genova
Pietro - Via Verdi - Genova
Gianni - Via Rossi - Genova
Luca - Via Bianchi - Roma
Giorgio - Via Verdi - Roma
Simone - Via Rossi - Roma
Giuliano - Via Gialli - Roma
Marco - Via Bianchi - Torino
Luigi - Via Verdi - Torino

io voglio che la mia pagina asp dapprima scelga la città, ma non con la stessa probabilità di accadere.
Per questo pensavo di fare una funzione
random Int Rnd * 100
if x<20 then Genova
if x>20 <70 then Roma
if x>70 then Torino
Ora ho scritto solo il concetto, non la sintassi corretta. In questo modo mi da 20% di possibilità Genova, 50% Roma, 30% Torino. E questo mi va bene.

Ma come faccio ora a fargli pescare un record (un nome proprio quindi) della città che è uscita dal primo "sorteggio"? (i nomi propri hanno le stesse probabilità di uscire, ma notare che però non sono lo stesso numero nei vari casi, infatti Genova ne ha 3, Roma 4 e Torino 2)
Spero di essere stato chiaro, grazie a chi potrà aiutarmi
RE: Random pick in pagina asp
AlessC-MSFT non è online. Ultima attività: 03/07/2008 17.33.43AlessC-MSFT
Inserito il: 14 maggio 2008 05.48
Microsoft Employee
contributi / Blog / 152 messaggi dal 04 giu 2007
Secondo il teorema di Bayes

se A e B sono eventi indipendenti
P(A|B) = P(A) * P(B)

Nel tuo caso separare la generazione casuale dell'evento è equivalente ad una estrazione casuale fin dall'inizio.

Esempi:
Mario - Via Bianchi - Genova ha p=1/9 se pescato a caso dalla lista iniziale.
Se prima peschi Genova e poi Mario hai P= 1/3 (ci sono 3 nomi con città=Genova su 9) * 1/3 (ci sono tre nomi a Genova)
Luca - Via Bianchi - Roma ha 4/9 * 1/4 = 1/9
Marco - Via Bianchi - Torino 2/9 * 1/2 = 1/9

Una soluzione più pulita sarebbe


SELECT TOP 1 Nome
FROM table
ORDER BY NEWID()


Questo garantisce che una riga sia selezionata quasi assolutamente a caso (Soluzione per MS SQL Server)

HTH

--Alessandro

Vai a:

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums