标签存档: rand

mt_rand与rand

貌似好久没写日志了

今天在手册中查rand()用法时,无意发现了mt_rand()这个函数。

很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 » Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。

手册真的是个好东西呀,时常查查手册,也能发现不少小技巧,呵呵。

在Mysql表中取随机记录

RAND()是Mysql中的取随机数函数,该函数返回一个float型数值v,v的值为0<v<1.0。
例如:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT RAND();
        -> 0.9233482386203
mysql> SELECT RAND(20);
        -> 0.15888261251047
mysql> SELECT RAND(20);
        -> 0.15888261251047
mysql> SELECT RAND();
        -> 0.63553050033332
mysql> SELECT RAND();
        -> 0.70100469486881
mysql> SELECT RAND(20);
        -> 0.15888261251047

我们可以使用ORDER BY RAND()取得随机排列的一组数据,例如:

1
mysql> SELECT * FROM tbl_name ORDER BY RAND();

将ORDER BY RAND()与LIMIT搭配使用,还可以取得固定条数的随机记录,例如:

1
mysql> SELECT * FROM `wzy_questions`  ORDER BY RAND() LIMIT 1;