您的位置:首页 > 其它

在1-15内取一个随机数(一条命令搞定)

2016-04-18 15:25 197 查看
1. [root@www ~]# echo `expr ${RANDOM} % 14 + 1 `
10
[root@www ~]#

2. [root@www ~]# echo $(( ${RANDOM} % 14 + 1 ))
4
[root@www ~]#

3. [root@www ~]# echo $[ ${RANDOM} % 14 + 1 ]
13
[root@www ~]#

4. [root@www ~]# let m=${RANDOM}%14+1 ;echo $m
8
[root@www ~]#

虽然Bash shell 有四种算术运算方法,但并不是每一种都是跨平台的,建议使用expr。
另外,我们在 script 中经常有加1操作,以下四法皆可:
m=$[ m + 1]
m=`expr $m + 1`
m=$(($m + 1))
let m=m+1

用mysql函数实现:

mysql> select rand();
+--------------------+
| rand() |
+--------------------+
| 0.9146193386191682 |
+--------------------+
1 row in set (0.00 sec)

mysql> select ceil(100*rand()),ceil(100*rand());
+------------------+------------------+
| ceil(100*rand()) | ceil(100*rand()) |
+------------------+------------------+
| 31 | 78 |
+------------------+------------------+
1 row in set (0.00 sec)

mysql> select floor(100*rand()),floor(100*rand());
+-------------------+-------------------+
| floor(100*rand()) | floor(100*rand()) |
+-------------------+-------------------+
| 95 | 45 |
+-------------------+-------------------+
1 row in set (0.00 sec)

mysql> select mod(floor(100*rand()),15),floor(100*rand());
+---------------------------+-------------------+
| mod(floor(100*rand()),15) | floor(100*rand()) |
+---------------------------+-------------------+
| 11 | 69 |
+---------------------------+-------------------+
1 row in set (0.00 sec)

mysql> select mod(floor(100*rand()),15),floor(100*rand()) % 15;
+---------------------------+------------------------+
| mod(floor(100*rand()),15) | floor(100*rand()) % 15 |
+---------------------------+------------------------+
| 9 | 11 |
+---------------------------+------------------------+
1 row in set (0.00 sec)

mysql>

[root@192 ~]# /usr/bin/mysql -p3306 --socket=/data/3306/mysql.sock -e "select mod(ceil(100000*rand()),14) + 1 ;" | awk 'NR==2{print $0}'
6
[root@192 ~]# /usr/bin/mysql -p3306 --socket=/data/3306/mysql.sock -e "select mod(ceil(100000*rand()),14) + 1 ;" | awk 'NR==2{print $0}'
14
[root@192 ~]# /usr/bin/mysql -p3306 --socket=/data/3306/mysql.sock -e "select mod(ceil(100000*rand()),14) + 1 ;" | awk 'NR==2{print $0}'
3
[root@192 ~]# /usr/bin/mysql -p3306 --socket=/data/3306/mysql.sock -e "select mod(ceil(100000*rand()),14) + 1 ;" | awk 'NR==2{print $0}'
8
[root@192 ~]# /usr/bin/mysql -p3306 --socket=/data/3306/mysql.sock -e "select mod(ceil(100000*rand()),14) + 1 ;" | awk 'NR==2{print $0}'
7
[root@192 ~]#
完美,练习mysql的函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息