RAND() 
RAND(N) 
返回一个范围在 0 到 1.0 之间的随机浮点值。如果一个整数参数 N 被指定,它被当做种子值使用(用于产生一个可重复的数值): 
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在一个 ORDER BY 子句中,不可以使用 RAND() 值使用一个列,因为 ORDER BY 将多次重复计算列。从 MySQL 3.23 开始,你可以使用:SELECT * FROM table_name ORDER BY RAND(),这有利于得到一个来自 SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000 的集合中的随机样本。 注意,在一个 WHERE 子句中的 RAND() 将在每次 WHERE 执行时被重新计算。 RAND() 并不是预期完美的随机数发生器,但是可以代替做为产生特别的随机数一个快速的方法,这样便于在两个不同平台下的同一 MySQL 版本间移动。

解决方案 »

  1.   

    ROUND(RAND()*10+0.5)
    1-10随机整数ROUND(RAND()*2147483647+0.5)
    随机int值
      

  2.   

    mysql> create table myrand(id int not null,randed int not null);
    Query OK, 0 rows affected (0.06 sec)mysql> delimiter //
    mysql> create procedure randtest(param int)
        -> begin
        -> declare v int default 1;
        -> while(v<param)
        -> do
        -> insert into myrand values(v,rand()*1000);
        -> set v=v+1;
        -> end while;
        -> end
        -> //
    Query OK, 0 rows affected (0.08 sec)mysql> delimiter ;
    mysql> call randtest(200);
    Query OK, 1 row affected (0.25 sec)mysql> select * from myrand;
    +-----+--------+
    | id  | randed |
    +-----+--------+
    | 1   | 654    |
    | 2   | 219    |
    | 3   | 135    |
    | 4   | 17     |
    | 5   | 680    |
    | 6   | 347    |
    | 7   | 698    |
    | 8   | 450    |
    | 9   | 153    |
    | 10  | 417    |
    | 11  | 625    |
    | 12  | 876    |
    | 13  | 504    |
    | 14  | 893    |
    | 15  | 954    |
    | 16  | 90     |
    | 17  | 587    |
    | 18  | 664    |
    | 19  | 559    |
    | 20  | 803    |
    .....................