Likes Likes:  0
Resultaten 1 tot 9 van de 9
Geen

Onderwerp: Willekeurige foto

  1. #1
    Gaafy
    Willekeurige foto
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Willekeurige foto

    Hoi,

    Ik gebruik de volgende code om een willekeurige foto te kiezen:

    // Kies een willekeurige foto
    $random = mysql_fetch_array(mysql_query("SELECT id FROM photo ORDER BY
    RAND() LIMIT 0, 1"));

    Nu komt er echter 9 v.d. 10 keer foto "1" als uitkomst.
    Wat kan ik hier aan doen?

    Gaafy


  2. #2
    Ronald Paul
    Willekeurige foto
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Willekeurige foto

    Gaafy <gaafy@hotmail.com> schreef:

    >Ik gebruik de volgende code om een willekeurige foto te kiezen:
    >
    >// Kies een willekeurige foto
    >$random = mysql_fetch_array(mysql_query("SELECT id FROM photo ORDER BY
    >RAND() LIMIT 0, 1"));
    >
    >Nu komt er echter 9 v.d. 10 keer foto "1" als uitkomst.
    >Wat kan ik hier aan doen?


    list(, $random) = mysql_fetch_array(mysql_query("[..]"));

    Ongetest.

    --
    Groet, Ronald

  3. #3
    Ronald Klip
    Willekeurige foto
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Willekeurige foto

    Ronald Paul schreef:
    > Gaafy <gaafy@hotmail.com> schreef:
    >
    > >Ik gebruik de volgende code om een willekeurige foto te kiezen:
    > >
    > >// Kies een willekeurige foto
    > >$random = mysql_fetch_array(mysql_query("SELECT id FROM photo ORDER BY
    > >RAND() LIMIT 0, 1"));
    > >
    > >Nu komt er echter 9 v.d. 10 keer foto "1" als uitkomst.
    > >Wat kan ik hier aan doen?

    >
    > list(, $random) = mysql_fetch_array(mysql_query("[..]"));
    >
    > Ongetest.


    Alternatief: eerst alle id's ophalen en in een array stoppen, en daar
    vervolgens een willekeurig item uithalen.

    srand ((float) microtime() * 10000000);
    $eenID = array_rand ($alleIDs);

    Dat id gebruik je (OP) in een tweede select-query.

    Wel getest.

    --
    groet, Ronald

  4. #4
    uws
    Willekeurige foto
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Willekeurige foto

    I <b2ge8s$2cf0$1@nl-news.euro.net>, Gaafy skrev:
    > $random = mysql_fetch_array(mysql_query("SELECT id FROM photo ORDER BY
    > RAND() LIMIT 0, 1"));
    > Nu komt er echter 9 v.d. 10 keer foto "1" als uitkomst.


    Dat komt omdat je een array opvraagt, en niet een item daaruit.

    --
    uws mail uws@xs4all.nl

    soon i know i'll be back with you :: i'm nearly with you -- zero 7

  5. #5
    Gaafy
    Willekeurige foto
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Willekeurige foto

    uws heeft geschreven:
    > I <b2ge8s$2cf0$1@nl-news.euro.net>, Gaafy skrev:
    >
    >>$random = mysql_fetch_array(mysql_query("SELECT id FROM photo ORDER BY
    >>RAND() LIMIT 0, 1"));
    >>Nu komt er echter 9 v.d. 10 keer foto "1" als uitkomst.

    >
    > Dat komt omdat je een array opvraagt, en niet een item daaruit.


    Ja, dat snap ik, maar in die array zit maar 1 item (LIMIT 0,1) en dat
    zou door RAND() toch variabel moeten zijn?

    Gaafy
    --
    http://www.gaafy.nl



  6. #6
    Ronald Klip
    Willekeurige foto
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Willekeurige foto

    Gaafy schreef:
    > uws heeft geschreven:
    > > I <b2ge8s$2cf0$1@nl-news.euro.net>, Gaafy skrev:
    > >
    > >>$random = mysql_fetch_array(mysql_query("SELECT id FROM photo ORDER BY
    > >>RAND() LIMIT 0, 1"));
    > >>Nu komt er echter 9 v.d. 10 keer foto "1" als uitkomst.

    > >
    > > Dat komt omdat je een array opvraagt, en niet een item daaruit.

    >
    > Ja, dat snap ik, maar in die array zit maar 1 item (LIMIT 0,1) en dat
    > zou door RAND() toch variabel moeten zijn?


    Het ligt niet aan je query. Die methode geeft veel te vaak de eerste rij
    uit de tabel terug.

    "RAND() is not meant to be a perfect random generator, [...]"

    http://www.mysql.com/doc/en/Mathemat...s.html#IDX1250

    --
    groet, Ronald

  7. #7
    Ronald Paul
    Willekeurige foto
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Willekeurige foto

    Ronald Klip <ronald@bladibla.njet> schreef:

    >Het ligt niet aan je query. Die methode geeft veel te vaak de eerste rij
    >uit de tabel terug.
    >
    >"RAND() is not meant to be a perfect random generator, [...]"
    >
    >http://www.mysql.com/doc/en/Mathemat...s.html#IDX1250


    Geen enkele random-functie uit welke taal dan ook is zo bedoeld, tot
    voor kort althans. Het wordt steeds makkelijker om van ruis van
    buitenaf wel perfecte random getallen te genereren. Maar dat even
    terzijde.

    Ik heb even een poging gedaan om uit te zoeken wat nou de meest
    random-methode was. MySQL's ORDER BY RAND() (1) of PHP's array_rand()
    (2), en heb daarvoor hetvolgende scriptje geschreven:

    http://rcpaul.nl/usenet/mysqlrand.txt

    Methode 2 is bij 100 iteraties zuiverder (ik heb geen idee of ik deze
    term goed heb toegepast, maar het gaat even om het idee), maar bij
    1000 iteraties is methode 1 weer duidelijk zuiverder. Er is dus geen
    duidelijk verschil in de randomheid van de twee methode's en het is
    zeker niet zo dat de query die de OP gebruikt niet random genoeg is.
    Intern zullen beide methoden wel neerkomen op het gebruik van dezelfde
    functie van de standard C library waarbij de verschillen worden
    veroorzaakt door de verschillende momenten waarop wordt geseed.

    --
    Groet, Ronald

  8. #8
    Ronald Klip
    Willekeurige foto
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Willekeurige foto

    Ronald Paul schreef:
    >
    > Ik heb even een poging gedaan om uit te zoeken wat nou de meest
    > random-methode was. MySQL's ORDER BY RAND() (1) of PHP's array_rand()
    > (2), en heb daarvoor hetvolgende scriptje geschreven:
    >
    > http://rcpaul.nl/usenet/mysqlrand.txt
    >
    > Methode 2 is bij 100 iteraties zuiverder (ik heb geen idee of ik deze
    > term goed heb toegepast, maar het gaat even om het idee), maar bij
    > 1000 iteraties is methode 1 weer duidelijk zuiverder. Er is dus geen
    > duidelijk verschil in de randomheid van de twee methode's en het is
    > zeker niet zo dat de query die de OP gebruikt niet random genoeg is.
    > Intern zullen beide methoden wel neerkomen op het gebruik van dezelfde
    > functie van de standard C library waarbij de verschillen worden
    > veroorzaakt door de verschillende momenten waarop wordt geseed.


    Ik heb je test hier nagebootst, en kom tot dezelfde conclusie. Misschien
    wordt het afbeelden van een willekeurig plaatje verstoord door caching.

    Ter info: ik lees net in de manual dat het vanaf PHP 4.2.0 niet meer
    nodig is de random-nummer-generator te seeden.

    --
    groet, Ronald

  9. #9
    uws
    Willekeurige foto
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Willekeurige foto

    I <MPG.18b6e0c01da570f8989ac5@nl-news.euro.net>, Ronald Klip skrev:
    > [knip: random gedoe]


    Is het niet gewoon veel zuiverder om een byte op te vragen uit
    /dev/urandom? Volgens mij is die namelijk een stuk willekeuriger dan de
    functionaliteit die PHP en mySQL bieden...

    --
    uws mail uws@xs4all.nl

    who's gonna take it like this? :: no way :: you are, you are -- gomez

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics