Avatar billede jammerlab Nybegynder
11. maj 2003 - 16:41 Der er 19 kommentarer og
2 løsninger

Random funktion

Ok, jeg har følgende random:
mysql_query("SELECT id, citat, ((id*0)+rand()) AS Random FROM citat ORDER BY Random LIMIT 0, 1");

Er det bare mig eller virker den bare skod? Jeg har vel godt 60 citater og det er typisk nummer 1 der blir printed... er der andre random funktioner?
Avatar billede schaefner Juniormester
11. maj 2003 - 16:43 #1
mysql_query("SELECT id, citat FROM citat ORDER BY RANDOM() LIMIT 0,1");
Avatar billede jammerlab Nybegynder
11. maj 2003 - 16:44 #2
ok den er bedre? why...
Avatar billede erikjacobsen Ekspert
11. maj 2003 - 16:45 #3
((id*0)*rand())  er nok din fejl, men schefners er vel en bedre løsning
Avatar billede erikjacobsen Ekspert
11. maj 2003 - 16:46 #4
Fordi din (selv i min rettede udgave) vil favorisere små numre)
Avatar billede erikjacobsen Ekspert
11. maj 2003 - 16:46 #5
Nåh - øv, id*0 --- ha - ganske overflødigt.
Avatar billede jammerlab Nybegynder
11. maj 2003 - 16:48 #6
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result < huh?
Avatar billede erikjacobsen Ekspert
11. maj 2003 - 16:48 #7
mysql_query("SELECT id, citat FROM citat ORDER BY RAND() LIMIT 0,1");

men den er ikke supergo', den der rand()
Avatar billede jammerlab Nybegynder
11. maj 2003 - 16:49 #8
Ran og ikke random?
Avatar billede erikjacobsen Ekspert
11. maj 2003 - 16:50 #9
Du kan få en bedre fordeling ved at have et felt, der tæller
hvor mange gang et citat er vist, vælge det mindste, og
huske at tælle op. Tilfældigt bliver det ikke, men for den
enkelte, der kommer på din side, er det vel godt nok.
Avatar billede schaefner Juniormester
11. maj 2003 - 16:51 #10
hov, mig der huskede forkert. Den hedder selvfølgelig rand()
Avatar billede jammerlab Nybegynder
11. maj 2003 - 16:53 #11
jep den sprang frem og viste et citat som den aldrig har vist før ;) smukt det må være schaefner der skal have de point
Avatar billede tipsen Nybegynder
11. maj 2003 - 16:53 #12
Hvis mysql er v. >= 3.23.52 kan der være "issues" med rand() jvf. en user-comment på http://www.mysql.com/doc/en/Mathematical_functions.html

As of MySQL 3.23.52, MySQL changed the way
RAND() functions, such that you MUST supply a
SEED to get an actual random number. If you do
not, each new connection will return close to the
same number as the previous new connection. An
example to test this would be to run the follow
command multiple times in a row. mysql -u
username -p -e'select rand()' A basic way to seed
this would be to run RAND(NOW()).

Dvs:

SELECT id, citat FROM citat ORDER BY RAND(NOW()) LIMIT 0, 1

nok fungerer bedre, hvis det er en relativt ny version af mysql du bruger.
Avatar billede schaefner Juniormester
11. maj 2003 - 17:02 #13
nej, det er vel egentlig erikjacobsen der skal have point. Jeg havde skrevet random() istedet for rand()
Avatar billede jammerlab Nybegynder
11. maj 2003 - 17:03 #14
hehe er sq lidt ligeglad bare nogen der skal have de point så smid et svar alle 3 så :)
Avatar billede erikjacobsen Ekspert
11. maj 2003 - 17:08 #15
glem det
Avatar billede melange Nybegynder
11. maj 2003 - 17:49 #16
tipsen << så fik du opklaret noget som har irriteret mig længe :)
http://www.eksperten.dk/spm/346682 (01/05-2003 01:10:49)
Avatar billede tipsen Nybegynder
11. maj 2003 - 18:32 #17
melange: Synes ikke MySQL altid er lige gode til at dokumentere de ændringer de laver i koden. Det er irriterende at sådan en ændring skal findes ved et tilfælde i en user comment!
Avatar billede jammerlab Nybegynder
19. juni 2003 - 20:15 #18
venter stadig på de 3 svar hehe :P
Avatar billede schaefner Juniormester
19. juni 2003 - 20:44 #19
så skidt da
Avatar billede tipsen Nybegynder
26. juni 2003 - 11:50 #20
*svar*
Avatar billede jammerlab Nybegynder
15. juli 2003 - 12:05 #21
okay ser ud til den sidste er gået kold point til jer 2 så :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester