jrz Skrevet 13. desember 2004 Del Skrevet 13. desember 2004 jeg har en tabell med ca 50 oppføringer. jeg prøver å hente ut en random oppføring med følgende: SELECT ch FROM math WHERE fix = '0' order by rand() LIMIT 1 jeg får rad 1 i utrolig mange tilfeller. opp mot 80% Noen annen måte å gjøre det på for å få det bedre? Lenke til kommentar
audunr Skrevet 13. desember 2004 Del Skrevet 13. desember 2004 Er det veldig få rader med fix=0? Selv om det er bare to bør jo fordelingen når antall forsøk går opp bli 50/50, så hvorfor du får 80/20, vet jeg ikke. Det du kan forsøke er å hente ut alle radene, lagre disse i et array, og sjekke om http://www.php.net/manual/en/function.array-rand.php gir deg resultatet du ønsker. Du kan jo også sette opp en løkke som kjører den spørringen din mange, mange ganger (100.000, f.eks.), og sjekke om rad 1 er overrepresentert. Om du ikke har gjort det allerede. MVH Audun Lenke til kommentar
jrz Skrevet 13. desember 2004 Forfatter Del Skrevet 13. desember 2004 det er rundt 30 rader. da jeg er matematiker gjorde jeg noen tester, og rad nummer 1 har en representasjon på over 50% i veldig mange uttrekninger. noen andre måter som er bedre til å hente ut random? Lenke til kommentar
audunr Skrevet 13. desember 2004 Del Skrevet 13. desember 2004 Ville forsøkt med en annen versjon av MySQL, for å se om det er noen forskjell. Vill gjetning. MVH Audun Lenke til kommentar
audunr Skrevet 13. desember 2004 Del Skrevet 13. desember 2004 Har kjørt en test på min maskin nå, og her er det ingen overrepresentasjon. Bruker MySQL 4.0.22. MVH Audun Lenke til kommentar
jrz Skrevet 13. desember 2004 Forfatter Del Skrevet 13. desember 2004 får se litt nærmere på det senere. Lenke til kommentar
Lokaltog Skrevet 13. desember 2004 Del Skrevet 13. desember 2004 Har lest litt rundt om akkurat dette, og det viser seg at RAND()-funksjonen ikke er så random som man skulle regne med. Det finnes en workaround for dette, det holder å kjøre følgende spørring (merk at det er PHP-kode representert også: time()): SELECT * FROM tabell ORDER BY RAND(" . time() . " * " . time() . ") Prøv, kanskje den funker for deg også! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå