Gå til innhold

mysql rand() ikke helt random?


Anbefalte innlegg

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
Videoannonse
Annonse

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

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å! :thumbup:

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...