Hi

When I used the RAND() function (MySQL 3.23.45) I found the results were not
very random, instead I use an extra bit of php code to make sure the results
are more random.

mt_srand((double)microtime()*1000000);
$sql = "select .... order by RAND(".mt_rand(0,32767).") limit 50"
$rs = mysql_query($sql);
$num=mysql_num_rows($rs);
if($num>1) mysql_data_seek($rs,mt_rand(0,$num-1));
$row=mysql_fetch_array($rs);

To get a random record from earlier versions of MySQL you could do something
like this.

mt_srand((double)microtime()*1000000);
$sql = "select... ..where .... limit 0,50"
$rs = mysql_query($sql);
$num=mysql_num_rows($rs);
if($num>1) mysql_data_seek($rs,mt_rand(0,$num-1));
$row=mysql_fetch_array($rs);

if you have a lot of records you can always put random numbers in the limit
clause,  (select ... where ...limit  random_number, random_number + 50) this
will return a random block of records, then use the seek functions to
randomly pick a record from the record block, just make sure random_number
isn't greater than the total records in your recordset.


Pete Kelly


----- Original Message -----
From: "Gurhan Ozen" <[EMAIL PROTECTED]>
To: "Cummings, Shawn (GNAPs)" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Tuesday, May 07, 2002 5:11 PM
Subject: RE: Using RAND()


> You have to have MySQL 3.23 or greater..
>
> http://www.mysql.com/doc/M/a/Mathematical_functions.html
>
> Gurhan
>
> -----Original Message-----
> From: Cummings, Shawn (GNAPs) [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, May 07, 2002 11:33 AM
> To: [EMAIL PROTECTED]; Ulf Harnhammar
> Cc: [EMAIL PROTECTED]
> Subject: Using RAND()
>
>
>
>
> The RAND() syntax does not appear to be working for me.
>
> What version mySQL is required?
>
>
> At 04:43 PM 1/29/2002 +0200, Michael Widenius wrote:
>
> >Hi!
> >
> > >>>>> "Ulf" == Ulf Harnhammar <[EMAIL PROTECTED]> writes:
> >
> >Ulf> On Sun, 27 Jan 2002, Michael Widenius wrote:
> > >> One way to do this is to do as follows:
> > >> SELECT something FROM sometable WHERE somevar=somevalue ORDER BY
> > >> RAND() LIMIT 10
>
>
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
>
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail
> <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
>
>
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
>
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail
<[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
>
>
>
>


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to