|
Posted by Jim Michaels on 04/23/06 04:48
"Domestos" <andy.mak@virgin.netspam> wrote in message
news:1DA2g.22612$LH2.15753@newsfe2-win.ntli.net...
>A less computationally expensive method of accomplishing the same thing is
>to use the mt_rand() function. This function uses the Mersenne Twister
>algorithm and is considerably faster than rand(). In addition as of PHP
>version 4.2.0 there is no need to seed the mt_rand() random number
>generator with srand() or mt_srand()
>
> <?php
>
> // Range of numbers
>
> // Minimum number
> $min = "1";
>
> // Maximum number
> $max = "10";
>
> echo "mt_rand() Mersenne Twister pseudo-random number: ".
> mt_rand($min, $max);
>
> ?>
>
and by the way, I've tried PHP manual's suggested code
<?php
// seed with microseconds
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?>
but it doesn't make any difference. same result.
I've also tried
$q1=mysql_query("SELECT MAX(pid) AS a FROM cpg133_pictures", $link2);
if ($row=mysql_fetch_assoc($q1)) {
time_nanosleep(0, 100000);
mt_srand(make_seed()+$row['a']+rand());
$n=mt_rand(1,$row['a']);
but the 100ms nanosleep (which should affect microtime) didn't do anything
either, neither does the mt_srand. maybe the nanosleep never did anything
because it was too small for execution on UNIX.
I have also tried feeding $n into mt_srand(). between calls, makes no
difference. apparently mt_srand is set by default in PHP by microtime().
so when the interpreter starts up for the 2nd session of my image generator,
I'm stuck.
I had thought I could at least get something decent out of mysql's RAND().
Navigation:
[Reply to this message]
|